diff options
author | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 18:05:06 +0000 |
---|---|---|
committer | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 18:05:06 +0000 |
commit | ee4e69a70b0e5cb9e9b0bae8fbde7839a7d990d7 (patch) | |
tree | b9303b92174af4d5bd07f9129f70362a1069e852 /media/ffmpeg | |
parent | b69cc1d03f372fba1882ab52916ff4aec02d2bbe (diff) | |
download | chromium_src-ee4e69a70b0e5cb9e9b0bae8fbde7839a7d990d7.zip chromium_src-ee4e69a70b0e5cb9e9b0bae8fbde7839a7d990d7.tar.gz chromium_src-ee4e69a70b0e5cb9e9b0bae8fbde7839a7d990d7.tar.bz2 |
Enable partial playback
Currently Chrome supports partial playback of unsupported content.
However it only works for codecs Chrome doesn't know about. This CL
fixes the case where Chrome knows about the codec but does not support
it on a particular platform.
BUG = 127881
Review URL: https://chromiumcodereview.appspot.com/14997005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199244 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/ffmpeg')
-rw-r--r-- | media/ffmpeg/ffmpeg_common.cc | 23 | ||||
-rw-r--r-- | media/ffmpeg/ffmpeg_common.h | 12 |
2 files changed, 18 insertions, 17 deletions
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc index e47b8f3..51b4fa9 100644 --- a/media/ffmpeg/ffmpeg_common.cc +++ b/media/ffmpeg/ffmpeg_common.cc @@ -57,7 +57,8 @@ int64 ConvertToTimeBase(const AVRational& time_base, return av_rescale_q(timestamp.InMicroseconds(), kMicrosBase, time_base); } -AudioCodec CodecIDToAudioCodec(AVCodecID codec_id) { +// Converts an FFmpeg audio codec ID into its corresponding supported codec id. +static AudioCodec CodecIDToAudioCodec(AVCodecID codec_id) { switch (codec_id) { case AV_CODEC_ID_AAC: return kCodecAAC; @@ -137,7 +138,8 @@ static AVCodecID AudioCodecToCodecID(AudioCodec audio_codec, return AV_CODEC_ID_NONE; } -VideoCodec CodecIDToVideoCodec(AVCodecID codec_id) { +// Converts an FFmpeg video codec ID into its corresponding supported codec id. +static VideoCodec CodecIDToVideoCodec(AVCodecID codec_id) { switch (codec_id) { case AV_CODEC_ID_H264: return kCodecH264; @@ -264,7 +266,8 @@ static AVSampleFormat SampleFormatToAVSampleFormat(SampleFormat sample_format) { static void AVCodecContextToAudioDecoderConfig( const AVCodecContext* codec_context, bool is_encrypted, - AudioDecoderConfig* config) { + AudioDecoderConfig* config, + bool record_stats) { DCHECK_EQ(codec_context->codec_type, AVMEDIA_TYPE_AUDIO); AudioCodec codec = CodecIDToAudioCodec(codec_context->codec_id); @@ -288,7 +291,7 @@ static void AVCodecContextToAudioDecoderConfig( codec_context->extradata, codec_context->extradata_size, is_encrypted, - true); + record_stats); if (codec != kCodecOpus) { DCHECK_EQ(av_get_bytes_per_sample(codec_context->sample_fmt) * 8, config->bits_per_channel()); @@ -297,13 +300,14 @@ static void AVCodecContextToAudioDecoderConfig( void AVStreamToAudioDecoderConfig( const AVStream* stream, - AudioDecoderConfig* config) { + AudioDecoderConfig* config, + bool record_stats) { bool is_encrypted = false; AVDictionaryEntry* key = av_dict_get(stream->metadata, "enc_key_id", NULL, 0); if (key) is_encrypted = true; - return AVCodecContextToAudioDecoderConfig(stream->codec, - is_encrypted, config); + return AVCodecContextToAudioDecoderConfig( + stream->codec, is_encrypted, config, record_stats); } void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, @@ -336,7 +340,8 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, void AVStreamToVideoDecoderConfig( const AVStream* stream, - VideoDecoderConfig* config) { + VideoDecoderConfig* config, + bool record_stats) { gfx::Size coded_size(stream->codec->coded_width, stream->codec->coded_height); // TODO(vrk): This assumes decoded frame data starts at (0, 0), which is true @@ -386,7 +391,7 @@ void AVStreamToVideoDecoderConfig( coded_size, visible_rect, natural_size, stream->codec->extradata, stream->codec->extradata_size, is_encrypted, - true); + record_stats); } void VideoDecoderConfigToAVCodecContext( diff --git a/media/ffmpeg/ffmpeg_common.h b/media/ffmpeg/ffmpeg_common.h index 6cb7862..cc5955c 100644 --- a/media/ffmpeg/ffmpeg_common.h +++ b/media/ffmpeg/ffmpeg_common.h @@ -74,14 +74,16 @@ MEDIA_EXPORT int64 ConvertToTimeBase(const AVRational& time_base, void AVStreamToAudioDecoderConfig( const AVStream* stream, - AudioDecoderConfig* config); + AudioDecoderConfig* config, + bool record_stats); void AudioDecoderConfigToAVCodecContext( const AudioDecoderConfig& config, AVCodecContext* codec_context); void AVStreamToVideoDecoderConfig( const AVStream* stream, - VideoDecoderConfig* config); + VideoDecoderConfig* config, + bool record_stats); void VideoDecoderConfigToAVCodecContext( const VideoDecoderConfig& config, AVCodecContext* codec_context); @@ -98,12 +100,6 @@ VideoFrame::Format PixelFormatToVideoFormat(PixelFormat pixel_format); // Converts video formats to its corresponding FFmpeg's pixel formats. PixelFormat VideoFormatToPixelFormat(VideoFrame::Format video_format); -// Converts an FFmpeg video codec ID into its corresponding supported codec id. -VideoCodec CodecIDToVideoCodec(AVCodecID codec_id); - -// Converts an FFmpeg audio codec ID into its corresponding supported codec id. -AudioCodec CodecIDToAudioCodec(AVCodecID codec_id); - } // namespace media #endif // MEDIA_FFMPEG_FFMPEG_COMMON_H_ |