From c3b461d8a95395e3b1b4f5aaa9bf64fc794cf391 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Fri, 4 Dec 2015 01:14:15 +0100 Subject: [PATCH] AVCodecEncoder should not know the format --- .../media/plugins/ffmpeg/AVCodecEncoder.cpp | 19 ------------------- .../media/plugins/ffmpeg/AVCodecEncoder.h | 2 -- .../media/plugins/ffmpeg/FFmpegPlugin.cpp | 10 +++++++++- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.cpp b/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.cpp index 3f313d6d07..a84ed5f1eb 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.cpp +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.cpp @@ -54,25 +54,6 @@ AVCodecEncoder::AVCodecEncoder(uint32 codecID, int bitRateScale) } -AVCodecEncoder::AVCodecEncoder(const media_format& format) - : - Encoder(), - fBitRateScale(1), // TODO: is it OK? - fCodecID(CodecID(-1)), - fCodec(NULL), - fOwnContext(avcodec_alloc_context3(NULL)), - fContext(fOwnContext), - fCodecInitStatus(CODEC_INIT_NEEDED), - fFrame(avcodec_alloc_frame()), - fSwsContext(NULL), - fFramesWritten(0) -{ - TRACE("AVCodecEncoder::AVCodecEncoder()\n"); - _Init(); - SetUp(&format); -} - - void AVCodecEncoder::_Init() { diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.h b/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.h index 8205cd6506..40cc42c808 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.h +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecEncoder.h @@ -27,8 +27,6 @@ public: AVCodecEncoder(uint32 codecID, int bitRateScale); - AVCodecEncoder(const media_format& format); - virtual ~AVCodecEncoder(); virtual status_t AcceptedFormat( diff --git a/src/add-ons/media/plugins/ffmpeg/FFmpegPlugin.cpp b/src/add-ons/media/plugins/ffmpeg/FFmpegPlugin.cpp index e307f8154e..887f88e38d 100644 --- a/src/add-ons/media/plugins/ffmpeg/FFmpegPlugin.cpp +++ b/src/add-ons/media/plugins/ffmpeg/FFmpegPlugin.cpp @@ -159,7 +159,15 @@ FFmpegPlugin::NewEncoder(const media_codec_info& codecInfo) Encoder* FFmpegPlugin::NewEncoder(const media_format& format) { - return new(std::nothrow)AVCodecEncoder(format); + for (size_t i = 0; i < gEncoderCount; i++) { + media_format destFormat; + if (format.type == gEncoderTable[i].output_type) { + return new(std::nothrow)AVCodecEncoder( + gEncoderTable[i].codec_info.sub_id, + gEncoderTable[i].bit_rate_scale); + } + } + return NULL; }