diff --git a/headers/private/media/DecoderPlugin.h b/headers/private/media/DecoderPlugin.h index fa913fc83a..49693ee3b2 100644 --- a/headers/private/media/DecoderPlugin.h +++ b/headers/private/media/DecoderPlugin.h @@ -21,7 +21,7 @@ public: Decoder(); virtual ~Decoder(); - virtual void GetCodecInfo(media_codec_info &codecInfo) = 0; + virtual void GetCodecInfo(media_codec_info *codecInfo) = 0; // Setup get's called with the info data from Reader::GetStreamInfo virtual status_t Setup(media_format *ioEncodedFormat, const void *infoBuffer, int32 infoSize) = 0; diff --git a/headers/private/media/PluginManager.h b/headers/private/media/PluginManager.h index f7c998b110..59f62ac56b 100644 --- a/headers/private/media/PluginManager.h +++ b/headers/private/media/PluginManager.h @@ -7,7 +7,7 @@ #include status_t _CreateReader(Reader **reader, int32 *streamCount, media_file_format *mff, BDataIO *source); -status_t _CreateDecoder(Decoder **decoder, media_codec_info *mci, const media_format *format); +status_t _CreateDecoder(Decoder **decoder, const media_format *format); void _DestroyReader(Reader *reader); void _DestroyDecoder(Decoder *decoder); diff --git a/src/kits/media/MediaDecoder.cpp b/src/kits/media/MediaDecoder.cpp index 0eede103c5..8b743540cb 100644 --- a/src/kits/media/MediaDecoder.cpp +++ b/src/kits/media/MediaDecoder.cpp @@ -253,7 +253,7 @@ BMediaDecoder::GetDecoderInfo(media_codec_info *outInfo) const return fInitStatus; if (fDecoder != NULL) - fDecoder->GetCodecInfo(*outInfo); + fDecoder->GetCodecInfo(outInfo); else { strcpy(outInfo->short_name, "unknown"); strcpy(outInfo->pretty_name, "unknown"); diff --git a/src/kits/media/MediaExtractor.cpp b/src/kits/media/MediaExtractor.cpp index 71517ff45a..d7c0b48793 100644 --- a/src/kits/media/MediaExtractor.cpp +++ b/src/kits/media/MediaExtractor.cpp @@ -189,7 +189,7 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder **decoder, media_codec_info return res; } - res = _CreateDecoder(decoder, mci, &fStreamInfo[stream].encodedFormat); + res = _CreateDecoder(decoder, &fStreamInfo[stream].encodedFormat); if (res != B_OK) { printf("MediaExtractor::CreateDecoder failed for stream %ld\n", stream); return res; @@ -202,6 +202,9 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder **decoder, media_codec_info printf("MediaExtractor::CreateDecoder Setup failed for stream %ld: %ld (%s)\n", stream, res, strerror(res)); } + + (*decoder)->GetCodecInfo(mci); + return res; } diff --git a/src/kits/media/PluginManager.cpp b/src/kits/media/PluginManager.cpp index 882645e32a..e3d766952c 100644 --- a/src/kits/media/PluginManager.cpp +++ b/src/kits/media/PluginManager.cpp @@ -75,7 +75,7 @@ _CreateReader(Reader **reader, int32 *streamCount, media_file_format *mff, BData status_t -_CreateDecoder(Decoder **_decoder, media_codec_info *codecInfo, const media_format *format) +_CreateDecoder(Decoder **_decoder, const media_format *format) { printf("_CreateDecoder enter\n"); @@ -106,8 +106,6 @@ _CreateDecoder(Decoder **_decoder, media_codec_info *codecInfo, const media_form return B_ERROR; } - (*_decoder)->GetCodecInfo(*codecInfo); - printf("_CreateDecoder leave\n"); return B_OK;