| Index: media/ffmpeg/ffmpeg_common.cc
|
| diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
|
| index 25f6ed4199611e7f7cff332be800d1a3cc9b4238..e634c68c356e6e102bafb4f4c5888884ebdbbaa8 100644
|
| --- a/media/ffmpeg/ffmpeg_common.cc
|
| +++ b/media/ffmpeg/ffmpeg_common.cc
|
| @@ -430,16 +430,15 @@ void AVStreamToVideoDecoderConfig(
|
| format = VideoFrame::YV12A;
|
| }
|
|
|
| - config->Initialize(codec,
|
| - profile,
|
| - format,
|
| - (stream->codec->colorspace == AVCOL_SPC_BT709)
|
| - ? VideoFrame::COLOR_SPACE_HD_REC709
|
| - : VideoFrame::COLOR_SPACE_UNSPECIFIED,
|
| - coded_size, visible_rect, natural_size,
|
| - stream->codec->extradata, stream->codec->extradata_size,
|
| - is_encrypted,
|
| - record_stats);
|
| + // Prefer the color space found by libavcodec if available.
|
| + VideoFrame::ColorSpace color_space =
|
| + AVColorSpaceToVideoFrameColorSpace(stream->codec->colorspace);
|
| + if (color_space == VideoFrame::COLOR_SPACE_UNSPECIFIED)
|
| + color_space = VideoDecoderConfig::DefaultSrcColorSpace(natural_size);
|
| +
|
| + config->Initialize(codec, profile, format, color_space, coded_size,
|
| + visible_rect, natural_size, stream->codec->extradata,
|
| + stream->codec->extradata_size, is_encrypted, record_stats);
|
| }
|
|
|
| void VideoDecoderConfigToAVCodecContext(
|
| @@ -563,6 +562,22 @@ PixelFormat VideoFormatToPixelFormat(VideoFrame::Format video_format) {
|
| return PIX_FMT_NONE;
|
| }
|
|
|
| +VideoFrame::ColorSpace AVColorSpaceToVideoFrameColorSpace(
|
| + AVColorSpace color_space) {
|
| + switch (color_space) {
|
| + case AVCOL_SPC_BT709:
|
| + return VideoFrame::COLOR_SPACE_HD_REC709;
|
| + case AVCOL_SPC_SMPTE170M:
|
| + case AVCOL_SPC_BT470BG:
|
| + return VideoFrame::COLOR_SPACE_SD_REC601;
|
| + case AVCOL_SPC_UNSPECIFIED:
|
| + break;
|
| + default:
|
| + DVLOG(1) << "Unknown AVColorSpace: " << color_space;
|
| + }
|
| + return VideoFrame::COLOR_SPACE_UNSPECIFIED;
|
| +}
|
| +
|
| bool FFmpegUTCDateToTime(const char* date_utc,
|
| base::Time* out) {
|
| DCHECK(date_utc);
|
|
|