Chromium Code Reviews| Index: media/filters/ffmpeg_video_decoder.cc |
| diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc |
| index 606968b2141269ab1262ea9d3e5dbe8ad5d57d6b..3ff3db860d52293a9da46992a9a19ac3f2b043e8 100644 |
| --- a/media/filters/ffmpeg_video_decoder.cc |
| +++ b/media/filters/ffmpeg_video_decoder.cc |
| @@ -21,6 +21,7 @@ |
| #include "media/base/bind_to_current_loop.h" |
| #include "media/base/decoder_buffer.h" |
| #include "media/base/limits.h" |
| +#include "media/base/media_log.h" |
| #include "media/base/media_switches.h" |
| #include "media/base/timestamp_constants.h" |
| #include "media/base/video_frame.h" |
| @@ -30,6 +31,16 @@ |
| namespace media { |
| +namespace { |
| + |
| +std::string AVErrorString(int errnum) { |
|
wolenetz
2017/03/22 19:31:50
If the plan is to put similar into other ffmpeg us
sandersd (OOO until July 31)
2017/03/23 23:34:36
Done.
|
| + char errbuf[AV_ERROR_MAX_STRING_SIZE]; |
| + av_make_error_string(errbuf, AV_ERROR_MAX_STRING_SIZE, errnum); |
|
DaleCurtis
2017/03/22 00:43:16
Will need an ffmpeg roll to use this in component
sandersd (OOO until July 31)
2017/03/23 23:34:36
Done.
|
| + return std::string(errbuf); |
| +} |
| + |
| +} // namespace |
| + |
| // Always use 2 or more threads for video decoding. Most machines today will |
| // have 2-8 execution contexts. Using more cores generally doesn't seem to |
| // increase power usage and allows us to decode video faster. |
| @@ -112,8 +123,10 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) { |
| return avcodec_find_decoder(VideoCodecToCodecID(codec)) != nullptr; |
| } |
| -FFmpegVideoDecoder::FFmpegVideoDecoder() |
| - : state_(kUninitialized), decode_nalus_(false) { |
| +FFmpegVideoDecoder::FFmpegVideoDecoder(scoped_refptr<MediaLog> media_log) |
| + : media_log_(std::move(media_log)), |
| + state_(kUninitialized), |
| + decode_nalus_(false) { |
| thread_checker_.DetachFromThread(); |
| } |
| @@ -358,7 +371,9 @@ bool FFmpegVideoDecoder::FFmpegDecode( |
| &packet); |
| // Log the problem if we can't decode a video frame and exit early. |
| if (result < 0) { |
| - LOG(ERROR) << "Error decoding video: " << buffer->AsHumanReadableString(); |
| + MEDIA_LOG(DEBUG, media_log_) |
| + << "avcodec_decode_video2(): " << AVErrorString(result) << ", at " |
| + << buffer->AsHumanReadableString(); |
| return false; |
| } |