mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
01583602a9
The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
163 lines
4.5 KiB
C++
163 lines
4.5 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef DOM_CAMERA_GONK_RECORDER_PROFILES_H
|
|
#define DOM_CAMERA_GONK_RECORDER_PROFILES_H
|
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
#include <media/MediaProfiles.h>
|
|
#else
|
|
#include "FallbackCameraPlatform.h"
|
|
#endif
|
|
|
|
#include "ICameraControl.h"
|
|
#include "nsClassHashtable.h"
|
|
#include "nsRefPtrHashtable.h"
|
|
|
|
#ifndef CHECK_SETARG_RETURN
|
|
#define CHECK_SETARG_RETURN(x, rv) \
|
|
do { \
|
|
if (x) { \
|
|
DOM_CAMERA_LOGE(#x " failed\n"); \
|
|
return rv; \
|
|
} \
|
|
} while(0)
|
|
#endif
|
|
|
|
#ifndef CHECK_SETARG
|
|
#define CHECK_SETARG(x) CHECK_SETARG_RETURN(x, NS_ERROR_NOT_AVAILABLE)
|
|
#endif
|
|
|
|
namespace android {
|
|
class GonkRecorder;
|
|
};
|
|
|
|
namespace mozilla {
|
|
|
|
/**
|
|
* class GonkRecorderProfileBase
|
|
*/
|
|
template<class A, class V>
|
|
class GonkRecorderProfileBase : public ICameraControl::RecorderProfile
|
|
{
|
|
public:
|
|
GonkRecorderProfileBase(uint32_t aCameraId, int aQuality)
|
|
: RecorderProfile()
|
|
, mAudio(aCameraId, aQuality)
|
|
, mVideo(aCameraId, aQuality)
|
|
{ }
|
|
|
|
virtual const Audio& GetAudio() const override { return mAudio; }
|
|
virtual const Video& GetVideo() const override { return mVideo; }
|
|
|
|
protected:
|
|
virtual ~GonkRecorderProfileBase() { }
|
|
A mAudio;
|
|
V mVideo;
|
|
};
|
|
|
|
/**
|
|
* class GonkRecorderVideo
|
|
*/
|
|
class GonkRecorderVideo : public ICameraControl::RecorderProfile::Video
|
|
{
|
|
public:
|
|
GonkRecorderVideo(uint32_t aCameraId, int aQuality);
|
|
virtual ~GonkRecorderVideo() { }
|
|
|
|
android::video_encoder GetPlatformEncoder() const { return mPlatformEncoder; }
|
|
bool IsValid() const { return mIsValid; }
|
|
|
|
protected:
|
|
int GetProfileParameter(const char* aParameter);
|
|
static bool Translate(android::video_encoder aCodec, nsAString& aCodecName);
|
|
|
|
uint32_t mCameraId;
|
|
int mQuality;
|
|
bool mIsValid;
|
|
android::video_encoder mPlatformEncoder;
|
|
};
|
|
|
|
/**
|
|
* class GonkRecorderAudio
|
|
*/
|
|
class GonkRecorderAudio : public ICameraControl::RecorderProfile::Audio
|
|
{
|
|
public:
|
|
GonkRecorderAudio(uint32_t aCameraId, int aQuality);
|
|
virtual ~GonkRecorderAudio() { }
|
|
|
|
android::audio_encoder GetPlatformEncoder() const { return mPlatformEncoder; }
|
|
bool IsValid() const { return mIsValid; }
|
|
|
|
protected:
|
|
int GetProfileParameter(const char* aParameter);
|
|
static bool Translate(android::audio_encoder aCodec, nsAString& aCodecName);
|
|
|
|
uint32_t mCameraId;
|
|
int mQuality;
|
|
bool mIsValid;
|
|
android::audio_encoder mPlatformEncoder;
|
|
};
|
|
|
|
/**
|
|
* class GonkRecorderProfile
|
|
*/
|
|
class GonkRecorderProfile;
|
|
typedef nsRefPtrHashtable<nsStringHashKey, GonkRecorderProfile> ProfileHashtable;
|
|
|
|
class GonkRecorderProfile
|
|
: public GonkRecorderProfileBase<GonkRecorderAudio, GonkRecorderVideo>
|
|
{
|
|
public:
|
|
static nsresult GetAll(uint32_t aCameraId,
|
|
nsTArray<RefPtr<ICameraControl::RecorderProfile>>& aProfiles);
|
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
// Configures the specified recorder using the specified profile.
|
|
//
|
|
// Return values:
|
|
// - NS_OK on success;
|
|
// - NS_ERROR_INVALID_ARG if the profile isn't supported;
|
|
// - NS_ERROR_NOT_AVAILABLE if the recorder rejected the profile.
|
|
static nsresult ConfigureRecorder(android::GonkRecorder& aRecorder,
|
|
uint32_t aCameraId,
|
|
const nsAString& aProfileName);
|
|
#endif
|
|
|
|
protected:
|
|
GonkRecorderProfile(uint32_t aCameraId,
|
|
int aQuality);
|
|
|
|
int GetProfileParameter(const char* aParameter);
|
|
|
|
bool Translate(android::output_format aContainer, nsAString& aContainerName);
|
|
bool GetMimeType(android::output_format aContainer, nsAString& aMimeType);
|
|
bool IsValid() const { return mIsValid; };
|
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
nsresult ConfigureRecorder(android::GonkRecorder& aRecorder);
|
|
#endif
|
|
static already_AddRefed<GonkRecorderProfile> CreateProfile(uint32_t aCameraId,
|
|
int aQuality);
|
|
static ProfileHashtable* GetProfileHashtable(uint32_t aCameraId);
|
|
static PLDHashOperator Enumerate(const nsAString& aProfileName,
|
|
GonkRecorderProfile* aProfile,
|
|
void* aUserArg);
|
|
|
|
uint32_t mCameraId;
|
|
int mQuality;
|
|
bool mIsValid;
|
|
android::output_format mOutputFormat;
|
|
|
|
static nsClassHashtable<nsUint32HashKey, ProfileHashtable> sProfiles;
|
|
|
|
private:
|
|
DISALLOW_EVIL_CONSTRUCTORS(GonkRecorderProfile);
|
|
};
|
|
|
|
}; // namespace mozilla
|
|
|
|
#endif // DOM_CAMERA_GONK_RECORDER_PROFILES_H
|