Loading include/media/MediaProfiles.h +19 −4 Original line number Diff line number Diff line Loading @@ -302,10 +302,25 @@ private: // If the xml configuration file does not exist, use hard-coded values static MediaProfiles* createDefaultInstance(); static CamcorderProfile *createDefaultCamcorderLowProfile(); static CamcorderProfile *createDefaultCamcorderHighProfile(); static CamcorderProfile *createDefaultCamcorderTimeLapseLowProfile(); static CamcorderProfile *createDefaultCamcorderTimeLapseHighProfile(); static CamcorderProfile *createDefaultCamcorderQcifProfile(camcorder_quality quality); static CamcorderProfile *createDefaultCamcorderCifProfile(camcorder_quality quality); static void createDefaultCamcorderLowProfiles( MediaProfiles::CamcorderProfile **lowProfile, MediaProfiles::CamcorderProfile **lowSpecificProfile); static void createDefaultCamcorderHighProfiles( MediaProfiles::CamcorderProfile **highProfile, MediaProfiles::CamcorderProfile **highSpecificProfile); static CamcorderProfile *createDefaultCamcorderTimeLapseQcifProfile(camcorder_quality quality); static CamcorderProfile *createDefaultCamcorderTimeLapse480pProfile(camcorder_quality quality); static void createDefaultCamcorderTimeLapseLowProfiles( MediaProfiles::CamcorderProfile **lowTimeLapseProfile, MediaProfiles::CamcorderProfile **lowSpecificTimeLapseProfile); static void createDefaultCamcorderTimeLapseHighProfiles( MediaProfiles::CamcorderProfile **highTimeLapseProfile, MediaProfiles::CamcorderProfile **highSpecificTimeLapseProfile); static void createDefaultCamcorderProfiles(MediaProfiles *profiles); static void createDefaultVideoEncoders(MediaProfiles *profiles); static void createDefaultAudioEncoders(MediaProfiles *profiles); Loading media/java/android/media/CamcorderProfile.java +4 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,10 @@ public class CamcorderProfile * E.g. if the device supports 480p, 720p, and 1080p, then low is 480p and high is * 1080p. * * The same is true for time lapse quality levels, i.e. QUALITY_TIME_LAPSE_LOW, * QUALITY_TIME_LAPSE_HIGH are guaranteed to be supported and have to match one of * qcif, cif, 480p, 720p, or 1080p. * * A camcorder recording session with higher quality level usually has higher output * bit rate, better video and/or audio recording quality, larger video frame * resolution and higher audio sampling rate, etc, than those with lower quality Loading media/libmedia/MediaProfiles.cpp +75 −24 Original line number Diff line number Diff line Loading @@ -424,16 +424,16 @@ MediaProfiles::createDefaultVideoEncoders(MediaProfiles *profiles) } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderTimeLapseHighProfile() MediaProfiles::createDefaultCamcorderTimeLapseQcifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 20000000, 720, 480, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 1000000, 176, 144, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_TIME_LAPSE_HIGH; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; Loading @@ -441,65 +441,116 @@ MediaProfiles::createDefaultCamcorderTimeLapseHighProfile() } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderTimeLapseLowProfile() MediaProfiles::createDefaultCamcorderTimeLapse480pProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 1000000, 176, 144, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 20000000, 720, 480, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_TIME_LAPSE_LOW; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ void MediaProfiles::createDefaultCamcorderTimeLapseLowProfiles( MediaProfiles::CamcorderProfile **lowTimeLapseProfile, MediaProfiles::CamcorderProfile **lowSpecificTimeLapseProfile) { *lowTimeLapseProfile = createDefaultCamcorderTimeLapseQcifProfile(CAMCORDER_QUALITY_TIME_LAPSE_LOW); *lowSpecificTimeLapseProfile = createDefaultCamcorderTimeLapseQcifProfile(CAMCORDER_QUALITY_TIME_LAPSE_QCIF); } /*static*/ void MediaProfiles::createDefaultCamcorderTimeLapseHighProfiles( MediaProfiles::CamcorderProfile **highTimeLapseProfile, MediaProfiles::CamcorderProfile **highSpecificTimeLapseProfile) { *highTimeLapseProfile = createDefaultCamcorderTimeLapse480pProfile(CAMCORDER_QUALITY_TIME_LAPSE_HIGH); *highSpecificTimeLapseProfile = createDefaultCamcorderTimeLapse480pProfile(CAMCORDER_QUALITY_TIME_LAPSE_480P); } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderHighProfile() MediaProfiles::createDefaultCamcorderQcifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 360000, 352, 288, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 192000, 176, 144, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; MediaProfiles::AudioCodec *audioCodec = new MediaProfiles::AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); MediaProfiles::CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_HIGH; profile->mDuration = 60; profile->mQuality = quality; profile->mDuration = 30; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderLowProfile() MediaProfiles::createDefaultCamcorderCifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 192000, 176, 144, 20); MediaProfiles::AudioCodec *audioCodec = new MediaProfiles::AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 360000, 352, 288, 20); MediaProfiles::CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_LOW; profile->mDuration = 30; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ void MediaProfiles::createDefaultCamcorderLowProfiles( MediaProfiles::CamcorderProfile **lowProfile, MediaProfiles::CamcorderProfile **lowSpecificProfile) { *lowProfile = createDefaultCamcorderQcifProfile(CAMCORDER_QUALITY_LOW); *lowSpecificProfile = createDefaultCamcorderQcifProfile(CAMCORDER_QUALITY_QCIF); } /*static*/ void MediaProfiles::createDefaultCamcorderHighProfiles( MediaProfiles::CamcorderProfile **highProfile, MediaProfiles::CamcorderProfile **highSpecificProfile) { *highProfile = createDefaultCamcorderCifProfile(CAMCORDER_QUALITY_HIGH); *highSpecificProfile = createDefaultCamcorderCifProfile(CAMCORDER_QUALITY_CIF); } /*static*/ void MediaProfiles::createDefaultCamcorderProfiles(MediaProfiles *profiles) { profiles->mCamcorderProfiles.add(createDefaultCamcorderTimeLapseHighProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderTimeLapseLowProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderHighProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderLowProfile()); // low camcorder profiles. MediaProfiles::CamcorderProfile *lowProfile, *lowSpecificProfile; createDefaultCamcorderLowProfiles(&lowProfile, &lowSpecificProfile); profiles->mCamcorderProfiles.add(lowProfile); profiles->mCamcorderProfiles.add(lowSpecificProfile); // high camcorder profiles. MediaProfiles::CamcorderProfile* highProfile, *highSpecificProfile; createDefaultCamcorderHighProfiles(&highProfile, &highSpecificProfile); profiles->mCamcorderProfiles.add(highProfile); profiles->mCamcorderProfiles.add(highSpecificProfile); // low camcorder time lapse profiles. MediaProfiles::CamcorderProfile *lowTimeLapseProfile, *lowSpecificTimeLapseProfile; createDefaultCamcorderTimeLapseLowProfiles(&lowTimeLapseProfile, &lowSpecificTimeLapseProfile); profiles->mCamcorderProfiles.add(lowTimeLapseProfile); profiles->mCamcorderProfiles.add(lowSpecificTimeLapseProfile); // high camcorder time lapse profiles. MediaProfiles::CamcorderProfile *highTimeLapseProfile, *highSpecificTimeLapseProfile; createDefaultCamcorderTimeLapseHighProfiles(&highTimeLapseProfile, &highSpecificTimeLapseProfile); profiles->mCamcorderProfiles.add(highTimeLapseProfile); profiles->mCamcorderProfiles.add(highSpecificTimeLapseProfile); } /*static*/ void Loading Loading
include/media/MediaProfiles.h +19 −4 Original line number Diff line number Diff line Loading @@ -302,10 +302,25 @@ private: // If the xml configuration file does not exist, use hard-coded values static MediaProfiles* createDefaultInstance(); static CamcorderProfile *createDefaultCamcorderLowProfile(); static CamcorderProfile *createDefaultCamcorderHighProfile(); static CamcorderProfile *createDefaultCamcorderTimeLapseLowProfile(); static CamcorderProfile *createDefaultCamcorderTimeLapseHighProfile(); static CamcorderProfile *createDefaultCamcorderQcifProfile(camcorder_quality quality); static CamcorderProfile *createDefaultCamcorderCifProfile(camcorder_quality quality); static void createDefaultCamcorderLowProfiles( MediaProfiles::CamcorderProfile **lowProfile, MediaProfiles::CamcorderProfile **lowSpecificProfile); static void createDefaultCamcorderHighProfiles( MediaProfiles::CamcorderProfile **highProfile, MediaProfiles::CamcorderProfile **highSpecificProfile); static CamcorderProfile *createDefaultCamcorderTimeLapseQcifProfile(camcorder_quality quality); static CamcorderProfile *createDefaultCamcorderTimeLapse480pProfile(camcorder_quality quality); static void createDefaultCamcorderTimeLapseLowProfiles( MediaProfiles::CamcorderProfile **lowTimeLapseProfile, MediaProfiles::CamcorderProfile **lowSpecificTimeLapseProfile); static void createDefaultCamcorderTimeLapseHighProfiles( MediaProfiles::CamcorderProfile **highTimeLapseProfile, MediaProfiles::CamcorderProfile **highSpecificTimeLapseProfile); static void createDefaultCamcorderProfiles(MediaProfiles *profiles); static void createDefaultVideoEncoders(MediaProfiles *profiles); static void createDefaultAudioEncoders(MediaProfiles *profiles); Loading
media/java/android/media/CamcorderProfile.java +4 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,10 @@ public class CamcorderProfile * E.g. if the device supports 480p, 720p, and 1080p, then low is 480p and high is * 1080p. * * The same is true for time lapse quality levels, i.e. QUALITY_TIME_LAPSE_LOW, * QUALITY_TIME_LAPSE_HIGH are guaranteed to be supported and have to match one of * qcif, cif, 480p, 720p, or 1080p. * * A camcorder recording session with higher quality level usually has higher output * bit rate, better video and/or audio recording quality, larger video frame * resolution and higher audio sampling rate, etc, than those with lower quality Loading
media/libmedia/MediaProfiles.cpp +75 −24 Original line number Diff line number Diff line Loading @@ -424,16 +424,16 @@ MediaProfiles::createDefaultVideoEncoders(MediaProfiles *profiles) } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderTimeLapseHighProfile() MediaProfiles::createDefaultCamcorderTimeLapseQcifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 20000000, 720, 480, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 1000000, 176, 144, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_TIME_LAPSE_HIGH; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; Loading @@ -441,65 +441,116 @@ MediaProfiles::createDefaultCamcorderTimeLapseHighProfile() } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderTimeLapseLowProfile() MediaProfiles::createDefaultCamcorderTimeLapse480pProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 1000000, 176, 144, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 20000000, 720, 480, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_TIME_LAPSE_LOW; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ void MediaProfiles::createDefaultCamcorderTimeLapseLowProfiles( MediaProfiles::CamcorderProfile **lowTimeLapseProfile, MediaProfiles::CamcorderProfile **lowSpecificTimeLapseProfile) { *lowTimeLapseProfile = createDefaultCamcorderTimeLapseQcifProfile(CAMCORDER_QUALITY_TIME_LAPSE_LOW); *lowSpecificTimeLapseProfile = createDefaultCamcorderTimeLapseQcifProfile(CAMCORDER_QUALITY_TIME_LAPSE_QCIF); } /*static*/ void MediaProfiles::createDefaultCamcorderTimeLapseHighProfiles( MediaProfiles::CamcorderProfile **highTimeLapseProfile, MediaProfiles::CamcorderProfile **highSpecificTimeLapseProfile) { *highTimeLapseProfile = createDefaultCamcorderTimeLapse480pProfile(CAMCORDER_QUALITY_TIME_LAPSE_HIGH); *highSpecificTimeLapseProfile = createDefaultCamcorderTimeLapse480pProfile(CAMCORDER_QUALITY_TIME_LAPSE_480P); } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderHighProfile() MediaProfiles::createDefaultCamcorderQcifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 360000, 352, 288, 20); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 192000, 176, 144, 20); AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; MediaProfiles::AudioCodec *audioCodec = new MediaProfiles::AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); MediaProfiles::CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_HIGH; profile->mDuration = 60; profile->mQuality = quality; profile->mDuration = 30; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ MediaProfiles::CamcorderProfile* MediaProfiles::createDefaultCamcorderLowProfile() MediaProfiles::createDefaultCamcorderCifProfile(camcorder_quality quality) { MediaProfiles::VideoCodec *videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 192000, 176, 144, 20); MediaProfiles::AudioCodec *audioCodec = new MediaProfiles::AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); new MediaProfiles::VideoCodec(VIDEO_ENCODER_H263, 360000, 352, 288, 20); MediaProfiles::CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; AudioCodec *audioCodec = new AudioCodec(AUDIO_ENCODER_AMR_NB, 12200, 8000, 1); CamcorderProfile *profile = new MediaProfiles::CamcorderProfile; profile->mCameraId = 0; profile->mFileFormat = OUTPUT_FORMAT_THREE_GPP; profile->mQuality = CAMCORDER_QUALITY_LOW; profile->mDuration = 30; profile->mQuality = quality; profile->mDuration = 60; profile->mVideoCodec = videoCodec; profile->mAudioCodec = audioCodec; return profile; } /*static*/ void MediaProfiles::createDefaultCamcorderLowProfiles( MediaProfiles::CamcorderProfile **lowProfile, MediaProfiles::CamcorderProfile **lowSpecificProfile) { *lowProfile = createDefaultCamcorderQcifProfile(CAMCORDER_QUALITY_LOW); *lowSpecificProfile = createDefaultCamcorderQcifProfile(CAMCORDER_QUALITY_QCIF); } /*static*/ void MediaProfiles::createDefaultCamcorderHighProfiles( MediaProfiles::CamcorderProfile **highProfile, MediaProfiles::CamcorderProfile **highSpecificProfile) { *highProfile = createDefaultCamcorderCifProfile(CAMCORDER_QUALITY_HIGH); *highSpecificProfile = createDefaultCamcorderCifProfile(CAMCORDER_QUALITY_CIF); } /*static*/ void MediaProfiles::createDefaultCamcorderProfiles(MediaProfiles *profiles) { profiles->mCamcorderProfiles.add(createDefaultCamcorderTimeLapseHighProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderTimeLapseLowProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderHighProfile()); profiles->mCamcorderProfiles.add(createDefaultCamcorderLowProfile()); // low camcorder profiles. MediaProfiles::CamcorderProfile *lowProfile, *lowSpecificProfile; createDefaultCamcorderLowProfiles(&lowProfile, &lowSpecificProfile); profiles->mCamcorderProfiles.add(lowProfile); profiles->mCamcorderProfiles.add(lowSpecificProfile); // high camcorder profiles. MediaProfiles::CamcorderProfile* highProfile, *highSpecificProfile; createDefaultCamcorderHighProfiles(&highProfile, &highSpecificProfile); profiles->mCamcorderProfiles.add(highProfile); profiles->mCamcorderProfiles.add(highSpecificProfile); // low camcorder time lapse profiles. MediaProfiles::CamcorderProfile *lowTimeLapseProfile, *lowSpecificTimeLapseProfile; createDefaultCamcorderTimeLapseLowProfiles(&lowTimeLapseProfile, &lowSpecificTimeLapseProfile); profiles->mCamcorderProfiles.add(lowTimeLapseProfile); profiles->mCamcorderProfiles.add(lowSpecificTimeLapseProfile); // high camcorder time lapse profiles. MediaProfiles::CamcorderProfile *highTimeLapseProfile, *highSpecificTimeLapseProfile; createDefaultCamcorderTimeLapseHighProfiles(&highTimeLapseProfile, &highSpecificTimeLapseProfile); profiles->mCamcorderProfiles.add(highTimeLapseProfile); profiles->mCamcorderProfiles.add(highSpecificTimeLapseProfile); } /*static*/ void Loading