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; |
} |