commit 2528bd0db7331f98167c7e18dafddb568840c471 Author: Alexis Ballier Date: Thu Mar 1 10:48:46 2012 -0300 Replace av_metadata_(get/set2) by av_dict_(get/set). The former is deprecated and gone in ffmpeg git. diff --git a/lib/DllAvFormat.h b/lib/DllAvFormat.h index 0671fee..4f9a60d 100644 --- a/lib/DllAvFormat.h +++ b/lib/DllAvFormat.h @@ -63,7 +63,6 @@ public: virtual void av_register_all_dont_call(void)=0; virtual AVInputFormat *av_find_input_format(const char *short_name)=0; virtual int url_feof(AVIOContext *s)=0; - virtual AVDictionaryEntry *av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)=0; virtual void av_close_input_file(AVFormatContext *s)=0; virtual void av_close_input_stream(AVFormatContext *s)=0; virtual int av_read_frame(AVFormatContext *s, AVPacket *pkt)=0; @@ -105,7 +104,6 @@ public: virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options)=0; virtual int av_write_trailer(AVFormatContext *s)=0; virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt)=0; - virtual int av_metadata_set2(AVDictionary **pm, const char *key, const char *value, int flags)=0; }; #if (defined USE_EXTERNAL_FFMPEG) @@ -123,7 +121,6 @@ public: virtual void av_register_all_dont_call() { *(int* )0x0 = 0; } virtual AVInputFormat *av_find_input_format(const char *short_name) { return ::av_find_input_format(short_name); } virtual int url_feof(AVIOContext *s) { return ::url_feof(s); } - virtual AVDictionaryEntry *av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags){ return ::av_metadata_get(m, key, prev, flags); } virtual void av_close_input_file(AVFormatContext *s) { ::av_close_input_file(s); } virtual void av_close_input_stream(AVFormatContext *s) { ::av_close_input_stream(s); } virtual int av_read_frame(AVFormatContext *s, AVPacket *pkt) { return ::av_read_frame(s, pkt); } @@ -168,7 +165,6 @@ public: virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options) { return ::avformat_write_header (s, options); } virtual int av_write_trailer(AVFormatContext *s) { return ::av_write_trailer(s); } virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt) { return ::av_write_frame(s, pkt); } - virtual int av_metadata_set2(AVDictionary **pm, const char *key, const char *value, int flags) { return ::av_metadata_set2(pm, key, value, flags); } // DLL faking. virtual bool ResolveExports() { return true; } @@ -190,7 +186,6 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface DEFINE_METHOD0(void, av_register_all_dont_call) DEFINE_METHOD1(AVInputFormat*, av_find_input_format, (const char *p1)) DEFINE_METHOD1(int, url_feof, (AVIOContext *p1)) - DEFINE_METHOD4(AVDictionaryEntry*, av_metadata_get, (AVDictionary *p1, const char *p2, const AVDictionaryEntry *p3, int p4)) DEFINE_METHOD1(void, av_close_input_file, (AVFormatContext *p1)) DEFINE_METHOD1(void, av_close_input_stream, (AVFormatContext *p1)) DEFINE_METHOD1(int, av_read_play, (AVFormatContext *p1)) @@ -230,12 +225,10 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface DEFINE_METHOD2(int, avformat_write_header , (AVFormatContext *p1, AVDictionary **p2)) DEFINE_METHOD1(int, av_write_trailer, (AVFormatContext *p1)) DEFINE_METHOD2(int, av_write_frame , (AVFormatContext *p1, AVPacket *p2)) - DEFINE_METHOD4(int, av_metadata_set2, (AVDictionary **p1, const char *p2, const char *p3, int p4)); BEGIN_METHOD_RESOLVE() RESOLVE_METHOD_RENAME(av_register_all, av_register_all_dont_call) RESOLVE_METHOD(av_find_input_format) RESOLVE_METHOD(url_feof) - RESOLVE_METHOD(av_metadata_get) RESOLVE_METHOD(av_close_input_file) RESOLVE_METHOD(av_close_input_stream) RESOLVE_METHOD(av_read_frame) @@ -269,7 +262,6 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface RESOLVE_METHOD(avformat_write_header) RESOLVE_METHOD(av_write_trailer) RESOLVE_METHOD(av_write_frame) - RESOLVE_METHOD(av_metadata_set2) END_METHOD_RESOLVE() /* dependencies of libavformat */ diff --git a/lib/DllAvUtil.h b/lib/DllAvUtil.h index f907834..0a293f9 100644 --- a/lib/DllAvUtil.h +++ b/lib/DllAvUtil.h @@ -99,6 +99,8 @@ public: virtual int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)) = 0; virtual char *av_strdup(const char *s)=0; virtual int av_get_bits_per_sample_fmt(enum AVSampleFormat p1) = 0; + virtual AVDictionaryEntry *av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags) = 0; + virtual int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)=0; }; #if (defined USE_EXTERNAL_FFMPEG) @@ -136,6 +138,8 @@ public: virtual char *av_strdup(const char *s) { return ::av_strdup(s); } virtual int av_get_bits_per_sample_fmt(enum AVSampleFormat p1) { return ::av_get_bits_per_sample_fmt(p1); } + virtual AVDictionaryEntry *av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags){ return ::av_dict_get(m, key, prev, flags); } + virtual int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags) { return ::av_dict_set(pm, key, value, flags); } // DLL faking. virtual bool ResolveExports() { return true; } @@ -173,6 +177,8 @@ class DllAvUtilBase : public DllDynamic, DllAvUtilInterface DEFINE_METHOD4(int, av_fifo_generic_write, (AVFifoBuffer *p1, void *p2, int p3, int (*p4)(void*, void*, int))) DEFINE_METHOD1(char*, av_strdup, (const char *p1)) DEFINE_METHOD1(int, av_get_bits_per_sample_fmt, (enum AVSampleFormat p1)) + DEFINE_METHOD4(AVDictionaryEntry *, av_dict_get, (AVDictionary *p1, const char *p2, const AVDictionaryEntry *p3, int p4)) + DEFINE_METHOD4(int, av_dict_set, (AVDictionary **p1, const char *p2, const char *p3, int p4)); public: BEGIN_METHOD_RESOLVE() @@ -195,6 +201,8 @@ class DllAvUtilBase : public DllDynamic, DllAvUtilInterface RESOLVE_METHOD(av_fifo_generic_write) RESOLVE_METHOD(av_strdup) RESOLVE_METHOD(av_get_bits_per_sample_fmt) + RESOLVE_METHOD(av_dict_get) + RESOLVE_METHOD(av_dict_set) END_METHOD_RESOLVE() }; diff --git a/xbmc/cdrip/EncoderFFmpeg.cpp b/xbmc/cdrip/EncoderFFmpeg.cpp index 7959919..b67b231 100644 --- a/xbmc/cdrip/EncoderFFmpeg.cpp +++ b/xbmc/cdrip/EncoderFFmpeg.cpp @@ -181,7 +181,7 @@ bool CEncoderFFmpeg::Init(const char* strFile, int iInChannels, int iInRate, int void CEncoderFFmpeg::SetTag(const CStdString tag, const CStdString value) { - m_dllAvFormat.av_metadata_set2(&m_Format->metadata, tag.c_str(), value.c_str(), 0); + m_dllAvUtil.av_dict_set(&m_Format->metadata, tag.c_str(), value.c_str(), 0); } int CEncoderFFmpeg::MuxerReadPacket(void *opaque, uint8_t *buf, int buf_size) diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp index aff44f6..991491c 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp @@ -959,8 +959,8 @@ void CDVDDemuxFFmpeg::AddStream(int iId) st->iBitRate = pStream->codec->bit_rate; st->iBitsPerSample = pStream->codec->bits_per_coded_sample; - if(m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)) - st->m_description = m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)->value; + if(m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)) + st->m_description = m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)->value; break; } @@ -1049,8 +1049,8 @@ void CDVDDemuxFFmpeg::AddStream(int iId) if(pStream->codec) st->identifier = pStream->codec->sub_id; - if(m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)) - st->m_description = m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)->value; + if(m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)) + st->m_description = m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)->value; break; } @@ -1061,7 +1061,7 @@ void CDVDDemuxFFmpeg::AddStream(int iId) { std::string fileName = "special://temp/fonts/"; XFILE::CDirectory::Create(fileName); - AVDictionaryEntry *nameTag = m_dllAvFormat.av_metadata_get(pStream->metadata, "filename", NULL, 0); + AVDictionaryEntry *nameTag = m_dllAvUtil.av_dict_get(pStream->metadata, "filename", NULL, 0); if (!nameTag) { CLog::Log(LOGERROR, "%s: TTF attachment has no name", __FUNCTION__); break; @@ -1110,7 +1110,7 @@ void CDVDDemuxFFmpeg::AddStream(int iId) // API added on: 2010-10-15 // (Note that while the function was available earlier, the generic // metadata tags were not populated by default) - AVDictionaryEntry *langTag = m_dllAvFormat.av_metadata_get(pStream->metadata, "language", NULL, 0); + AVDictionaryEntry *langTag = m_dllAvUtil.av_dict_get(pStream->metadata, "language", NULL, 0); if (langTag) strncpy(m_streams[iId]->language, langTag->value, 3); #else @@ -1220,7 +1220,7 @@ void CDVDDemuxFFmpeg::GetChapterName(std::string& strChapterName) // API added on: 2010-10-15 // (Note that while the function was available earlier, the generic // metadata tags were not populated by default) - AVDictionaryEntry *titleTag = m_dllAvFormat.av_metadata_get(m_pFormatContext->chapters[chapterIdx-1]->metadata, + AVDictionaryEntry *titleTag = m_dllAvUtil.av_dict_get(m_pFormatContext->chapters[chapterIdx-1]->metadata, "title", NULL, 0); if (titleTag) strChapterName = titleTag->value;