Hi,
the attached patch should fix this bug.
However note that the upstream appears to be dead,
so this package should be replaced with its most active fork, mpv.
https://github.com/mpv-player/mpv
--
Anton Khirnov
Index: mplayer2-2.0-701-gd4c5b7f/Makefile
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/Makefile 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/Makefile 2014-03-01 11:58:34.507804581 +0000
@@ -230,7 +230,6 @@
libaf/af_hrtf.c \
libaf/af_karaoke.c \
libaf/af_lavcac3enc.c \
- libaf/af_lavcresample.c \
libaf/af_pan.c \
libaf/af_resample.c \
libaf/af_scaletempo.c \
@@ -308,7 +307,6 @@
libmpcodecs/vf_ilpack.c \
libmpcodecs/vf_ivtc.c \
libmpcodecs/vf_kerndeint.c \
- libmpcodecs/vf_lavc.c \
libmpcodecs/vf_lavcdeint.c \
libmpcodecs/vf_mirror.c \
libmpcodecs/vf_noformat.c \
@@ -338,7 +336,6 @@
libmpcodecs/vf_tile.c \
libmpcodecs/vf_tinterlace.c \
libmpcodecs/vf_unsharp.c \
- libmpcodecs/vf_uspp.c \
libmpcodecs/vf_vo.c \
libmpcodecs/vf_yadif.c \
libmpcodecs/vf_yuvcsp.c \
Index: mplayer2-2.0-701-gd4c5b7f/libaf/af.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libaf/af.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libaf/af.c 2014-03-01 11:53:55.872002360 +0000
@@ -41,7 +41,7 @@
extern af_info_t af_info_volnorm;
extern af_info_t af_info_extrastereo;
extern af_info_t af_info_lavcac3enc;
-extern af_info_t af_info_lavcresample;
+//extern af_info_t af_info_lavcresample;
extern af_info_t af_info_sweep;
extern af_info_t af_info_hrtf;
extern af_info_t af_info_ladspa;
@@ -71,7 +71,7 @@
&af_info_volnorm,
&af_info_extrastereo,
&af_info_lavcac3enc,
- &af_info_lavcresample,
+ //&af_info_lavcresample,
&af_info_sweep,
&af_info_hrtf,
#ifdef CONFIG_LADSPA
@@ -529,8 +529,10 @@
&(s->output.rate));
if (!af) {
char *resampler = "resample";
+#if 0
if ((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_SLOW)
resampler = "lavcresample";
+#endif
if((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_SLOW){
if(!strcmp(s->first->info->name,"format"))
af = af_append(s,s->first,resampler);
Index: mplayer2-2.0-701-gd4c5b7f/libmpcodecs/ad_ffmpeg.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpcodecs/ad_ffmpeg.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpcodecs/ad_ffmpeg.c 2014-03-01 11:55:04.072666838 +0000
@@ -175,7 +175,7 @@
int container_samplerate = sh_audio->container_out_samplerate;
if (!container_samplerate && sh_audio->wf)
container_samplerate = sh_audio->wf->nSamplesPerSec;
- if (codec->codec_id == CODEC_ID_AAC
+ if (codec->codec_id == AV_CODEC_ID_AAC
&& samplerate == 2 * container_samplerate)
broken_srate = true;
else if (container_samplerate)
Index: mplayer2-2.0-701-gd4c5b7f/libmpcodecs/vd_ffmpeg.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpcodecs/vd_ffmpeg.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpcodecs/vd_ffmpeg.c 2014-03-01 11:55:35.460432979 +0000
@@ -163,10 +163,10 @@
ctx->do_slices = 1;
if (lavc_codec->capabilities & CODEC_CAP_DR1 && !do_vis_debug
- && lavc_codec->id != CODEC_ID_H264
- && lavc_codec->id != CODEC_ID_INTERPLAY_VIDEO
- && lavc_codec->id != CODEC_ID_ROQ && lavc_codec->id != CODEC_ID_VP8
- && lavc_codec->id != CODEC_ID_LAGARITH)
+ && lavc_codec->id != AV_CODEC_ID_H264
+ && lavc_codec->id != AV_CODEC_ID_INTERPLAY_VIDEO
+ && lavc_codec->id != AV_CODEC_ID_ROQ && lavc_codec->id != AV_CODEC_ID_VP8
+ && lavc_codec->id != AV_CODEC_ID_LAGARITH)
ctx->do_dr1 = 1;
ctx->ip_count = ctx->b_count = 0;
Index: mplayer2-2.0-701-gd4c5b7f/libmpcodecs/vf.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpcodecs/vf.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpcodecs/vf.c 2014-03-01 11:58:28.929668355 +0000
@@ -51,7 +51,7 @@
extern const vf_info_t vf_info_rotate;
extern const vf_info_t vf_info_mirror;
extern const vf_info_t vf_info_palette;
-extern const vf_info_t vf_info_lavc;
+//extern const vf_info_t vf_info_lavc;
extern const vf_info_t vf_info_dvbscale;
extern const vf_info_t vf_info_cropdetect;
extern const vf_info_t vf_info_test;
@@ -94,7 +94,7 @@
extern const vf_info_t vf_info_remove_logo;
extern const vf_info_t vf_info_hue;
extern const vf_info_t vf_info_spp;
-extern const vf_info_t vf_info_uspp;
+//extern const vf_info_t vf_info_uspp;
extern const vf_info_t vf_info_fspp;
extern const vf_info_t vf_info_pp7;
extern const vf_info_t vf_info_yuvcsp;
@@ -137,11 +137,11 @@
#ifdef CONFIG_LIBPOSTPROC
&vf_info_pp,
#endif
- &vf_info_lavc,
+ //&vf_info_lavc,
&vf_info_lavcdeint,
&vf_info_screenshot,
&vf_info_fspp,
- &vf_info_uspp,
+ //&vf_info_uspp,
&vf_info_dvbscale,
&vf_info_cropdetect,
Index: mplayer2-2.0-701-gd4c5b7f/libmpdemux/demux_lavf.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpdemux/demux_lavf.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpdemux/demux_lavf.c 2014-03-01 11:59:52.592711740 +0000
@@ -345,10 +345,10 @@
sh_audio->samplerate = codec->sample_rate;
sh_audio->i_bps = codec->bit_rate / 8;
switch (codec->codec_id) {
- case CODEC_ID_PCM_ALAW:
+ case AV_CODEC_ID_PCM_ALAW:
sh_audio->format = 0x6;
break;
- case CODEC_ID_PCM_MULAW:
+ case AV_CODEC_ID_PCM_MULAW:
sh_audio->format = 0x7;
break;
}
@@ -381,7 +381,7 @@
sh_video->libav_codec_id = codec->codec_id;
bih = calloc(sizeof(*bih) + codec->extradata_size, 1);
- if (codec->codec_id == CODEC_ID_RAWVIDEO) {
+ if (codec->codec_id == AV_CODEC_ID_RAWVIDEO) {
switch (codec->pix_fmt) {
case PIX_FMT_RGB24:
codec->codec_tag = MKTAG(24, 'B', 'G', 'R');
@@ -422,8 +422,8 @@
* heuristic makes up works with subtitles in practice.
*/
double fps;
- if (st->r_frame_rate.num)
- fps = av_q2d(st->r_frame_rate);
+ if (st->avg_frame_rate.num)
+ fps = av_q2d(st->avg_frame_rate);
else
fps = 1.0 / FFMAX(av_q2d(st->time_base),
av_q2d(st->codec->time_base) *
@@ -460,21 +460,21 @@
sh_sub_t *sh_sub;
char type;
/* only support text subtitles for now */
- if (codec->codec_id == CODEC_ID_TEXT)
+ if (codec->codec_id == AV_CODEC_ID_TEXT)
type = 't';
- else if (codec->codec_id == CODEC_ID_MOV_TEXT)
+ else if (codec->codec_id == AV_CODEC_ID_MOV_TEXT)
type = 'm';
- else if (codec->codec_id == CODEC_ID_SSA)
+ else if (codec->codec_id == AV_CODEC_ID_SSA)
type = 'a';
- else if (codec->codec_id == CODEC_ID_DVD_SUBTITLE)
+ else if (codec->codec_id == AV_CODEC_ID_DVD_SUBTITLE)
type = 'v';
- else if (codec->codec_id == CODEC_ID_XSUB)
+ else if (codec->codec_id == AV_CODEC_ID_XSUB)
type = 'x';
- else if (codec->codec_id == CODEC_ID_DVB_SUBTITLE)
+ else if (codec->codec_id == AV_CODEC_ID_DVB_SUBTITLE)
type = 'b';
- else if (codec->codec_id == CODEC_ID_DVB_TELETEXT)
+ else if (codec->codec_id == AV_CODEC_ID_DVB_TELETEXT)
type = 'd';
- else if (codec->codec_id == CODEC_ID_HDMV_PGS_SUBTITLE)
+ else if (codec->codec_id == AV_CODEC_ID_HDMV_PGS_SUBTITLE)
type = 'p';
else
break;
@@ -509,7 +509,7 @@
AVDictionaryEntry *ftag = av_dict_get(st->metadata, "filename",
NULL, 0);
char *filename = ftag ? ftag->value : NULL;
- if (st->codec->codec_id == CODEC_ID_TTF)
+ if (st->codec->codec_id == AV_CODEC_ID_TTF)
demuxer_add_attachment(demuxer, bstr(filename),
bstr("application/x-truetype-font"),
(struct bstr){codec->extradata,
@@ -954,7 +954,7 @@
prog->aid = program->stream_index[i];
break;
case AVMEDIA_TYPE_SUBTITLE:
- if (prog->sid == -2 && priv->avfc->streams[program->stream_index[i]]->codec->codec_id == CODEC_ID_TEXT)
+ if (prog->sid == -2 && priv->avfc->streams[program->stream_index[i]]->codec->codec_id == AV_CODEC_ID_TEXT)
prog->sid = program->stream_index[i];
break;
}
Index: mplayer2-2.0-701-gd4c5b7f/libmpdemux/demuxer.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpdemux/demuxer.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpdemux/demuxer.c 2014-03-01 11:59:05.134552568 +0000
@@ -490,35 +490,35 @@
static void allocate_parser(AVCodecContext **avctx, AVCodecParserContext **parser, unsigned format)
{
- enum CodecID codec_id = CODEC_ID_NONE;
+ enum AVCodecID codec_id = AV_CODEC_ID_NONE;
switch (format) {
case MKTAG('M', 'P', '4', 'L'):
- codec_id = CODEC_ID_AAC_LATM;
+ codec_id = AV_CODEC_ID_AAC_LATM;
break;
case 0x2000:
case 0x332D6361:
case 0x332D4341:
case 0x20736D:
case MKTAG('s', 'a', 'c', '3'):
- codec_id = CODEC_ID_AC3;
+ codec_id = AV_CODEC_ID_AC3;
break;
case MKTAG('d', 'n', 'e', 't'):
// DNET/byte-swapped AC-3 - there is no parser for that yet
- //codec_id = CODEC_ID_DNET;
+ //codec_id = AV_CODEC_ID_DNET;
break;
case MKTAG('E', 'A', 'C', '3'):
- codec_id = CODEC_ID_EAC3;
+ codec_id = AV_CODEC_ID_EAC3;
break;
case 0x2001:
case 0x86:
- codec_id = CODEC_ID_DTS;
+ codec_id = AV_CODEC_ID_DTS;
break;
case MKTAG('f', 'L', 'a', 'C'):
- codec_id = CODEC_ID_FLAC;
+ codec_id = AV_CODEC_ID_FLAC;
break;
case MKTAG('M', 'L', 'P', ' '):
- codec_id = CODEC_ID_MLP;
+ codec_id = AV_CODEC_ID_MLP;
break;
case 0x55:
case 0x5500736d:
@@ -526,19 +526,19 @@
case MKTAG('.', 'm', 'p', '3'):
case MKTAG('M', 'P', '3', ' '):
case MKTAG('L', 'A', 'M', 'E'):
- codec_id = CODEC_ID_MP3;
+ codec_id = AV_CODEC_ID_MP3;
break;
case 0x50:
case 0x5000736d:
case MKTAG('.', 'm', 'p', '2'):
case MKTAG('.', 'm', 'p', '1'):
- codec_id = CODEC_ID_MP2;
+ codec_id = AV_CODEC_ID_MP2;
break;
case MKTAG('T', 'R', 'H', 'D'):
- codec_id = CODEC_ID_TRUEHD;
+ codec_id = AV_CODEC_ID_TRUEHD;
break;
}
- if (codec_id != CODEC_ID_NONE) {
+ if (codec_id != AV_CODEC_ID_NONE) {
*avctx = avcodec_alloc_context3(NULL);
if (!*avctx)
return;
Index: mplayer2-2.0-701-gd4c5b7f/libmpdemux/mp_taglists.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpdemux/mp_taglists.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpdemux/mp_taglists.c 2014-03-01 12:00:44.298974409 +0000
@@ -22,111 +22,111 @@
#include "mp_taglists.h"
struct tag {
- enum CodecID id;
+ enum AVCodecID id;
unsigned int tag;
};
static const struct tag mp_wav_tags[] = {
- { CODEC_ID_ADPCM_4XM, MKTAG('4', 'X', 'M', 'A')},
- { CODEC_ID_ADPCM_ADX, MKTAG('S', 'a', 'd', 'x')},
- { CODEC_ID_ADPCM_EA, MKTAG('A', 'D', 'E', 'A')},
- { CODEC_ID_ADPCM_EA_MAXIS_XA, MKTAG('A', 'D', 'X', 'A')},
- { CODEC_ID_ADPCM_IMA_WS, MKTAG('A', 'I', 'W', 'S')},
- { CODEC_ID_ADPCM_THP, MKTAG('T', 'H', 'P', 'A')},
- { CODEC_ID_ADPCM_XA, MKTAG('P', 'S', 'X', 'A')},
- { CODEC_ID_AMR_NB, MKTAG('n', 'b', 0, 0)},
- { CODEC_ID_COOK, MKTAG('c', 'o', 'o', 'k')},
- { CODEC_ID_DSICINAUDIO, MKTAG('D', 'C', 'I', 'A')},
- { CODEC_ID_EAC3, MKTAG('E', 'A', 'C', '3')},
- { CODEC_ID_INTERPLAY_DPCM, MKTAG('I', 'N', 'P', 'A')},
- { CODEC_ID_MLP, MKTAG('M', 'L', 'P', ' ')},
- { CODEC_ID_MP1, 0x50},
- { CODEC_ID_MP4ALS, MKTAG('A', 'L', 'S', ' ')},
- { CODEC_ID_MUSEPACK7, MKTAG('M', 'P', 'C', ' ')},
- { CODEC_ID_MUSEPACK8, MKTAG('M', 'P', 'C', '8')},
- { CODEC_ID_NELLYMOSER, MKTAG('N', 'E', 'L', 'L')},
- { CODEC_ID_PCM_LXF, MKTAG('P', 'L', 'X', 'F')},
- { CODEC_ID_QCELP, MKTAG('Q', 'c', 'l', 'p')},
- { CODEC_ID_QDM2, MKTAG('Q', 'D', 'M', '2')},
- { CODEC_ID_RA_144, MKTAG('1', '4', '_', '4')},
- { CODEC_ID_RA_288, MKTAG('2', '8', '_', '8')},
- { CODEC_ID_ROQ_DPCM, MKTAG('R', 'o', 'Q', 'A')},
- { CODEC_ID_SHORTEN, MKTAG('s', 'h', 'r', 'n')},
- { CODEC_ID_SPEEX, MKTAG('s', 'p', 'x', ' ')},
- { CODEC_ID_TTA, MKTAG('T', 'T', 'A', '1')},
- { CODEC_ID_TWINVQ, MKTAG('T', 'W', 'I', '2')},
- { CODEC_ID_WAVPACK, MKTAG('W', 'V', 'P', 'K')},
- { CODEC_ID_WESTWOOD_SND1, MKTAG('S', 'N', 'D', '1')},
- { CODEC_ID_XAN_DPCM, MKTAG('A', 'x', 'a', 'n')},
+ { AV_CODEC_ID_ADPCM_4XM, MKTAG('4', 'X', 'M', 'A')},
+ { AV_CODEC_ID_ADPCM_ADX, MKTAG('S', 'a', 'd', 'x')},
+ { AV_CODEC_ID_ADPCM_EA, MKTAG('A', 'D', 'E', 'A')},
+ { AV_CODEC_ID_ADPCM_EA_MAXIS_XA, MKTAG('A', 'D', 'X', 'A')},
+ { AV_CODEC_ID_ADPCM_IMA_WS, MKTAG('A', 'I', 'W', 'S')},
+ { AV_CODEC_ID_ADPCM_THP, MKTAG('T', 'H', 'P', 'A')},
+ { AV_CODEC_ID_ADPCM_XA, MKTAG('P', 'S', 'X', 'A')},
+ { AV_CODEC_ID_AMR_NB, MKTAG('n', 'b', 0, 0)},
+ { AV_CODEC_ID_COOK, MKTAG('c', 'o', 'o', 'k')},
+ { AV_CODEC_ID_DSICINAUDIO, MKTAG('D', 'C', 'I', 'A')},
+ { AV_CODEC_ID_EAC3, MKTAG('E', 'A', 'C', '3')},
+ { AV_CODEC_ID_INTERPLAY_DPCM, MKTAG('I', 'N', 'P', 'A')},
+ { AV_CODEC_ID_MLP, MKTAG('M', 'L', 'P', ' ')},
+ { AV_CODEC_ID_MP1, 0x50},
+ { AV_CODEC_ID_MP4ALS, MKTAG('A', 'L', 'S', ' ')},
+ { AV_CODEC_ID_MUSEPACK7, MKTAG('M', 'P', 'C', ' ')},
+ { AV_CODEC_ID_MUSEPACK8, MKTAG('M', 'P', 'C', '8')},
+ { AV_CODEC_ID_NELLYMOSER, MKTAG('N', 'E', 'L', 'L')},
+ { AV_CODEC_ID_PCM_LXF, MKTAG('P', 'L', 'X', 'F')},
+ { AV_CODEC_ID_QCELP, MKTAG('Q', 'c', 'l', 'p')},
+ { AV_CODEC_ID_QDM2, MKTAG('Q', 'D', 'M', '2')},
+ { AV_CODEC_ID_RA_144, MKTAG('1', '4', '_', '4')},
+ { AV_CODEC_ID_RA_288, MKTAG('2', '8', '_', '8')},
+ { AV_CODEC_ID_ROQ_DPCM, MKTAG('R', 'o', 'Q', 'A')},
+ { AV_CODEC_ID_SHORTEN, MKTAG('s', 'h', 'r', 'n')},
+ { AV_CODEC_ID_SPEEX, MKTAG('s', 'p', 'x', ' ')},
+ { AV_CODEC_ID_TTA, MKTAG('T', 'T', 'A', '1')},
+ { AV_CODEC_ID_TWINVQ, MKTAG('T', 'W', 'I', '2')},
+ { AV_CODEC_ID_WAVPACK, MKTAG('W', 'V', 'P', 'K')},
+ { AV_CODEC_ID_WESTWOOD_SND1, MKTAG('S', 'N', 'D', '1')},
+ { AV_CODEC_ID_XAN_DPCM, MKTAG('A', 'x', 'a', 'n')},
{ 0, 0 },
};
static const struct tag mp_codecid_override_tags[] = {
- { CODEC_ID_AAC, MKTAG('M', 'P', '4', 'A')},
- { CODEC_ID_AAC_LATM, MKTAG('M', 'P', '4', 'L')},
- { CODEC_ID_AC3, 0x2000},
- { CODEC_ID_ADPCM_IMA_AMV, MKTAG('A', 'M', 'V', 'A')},
- { CODEC_ID_BINKAUDIO_DCT, MKTAG('B', 'A', 'U', '1')},
- { CODEC_ID_BINKAUDIO_RDFT, MKTAG('B', 'A', 'U', '2')},
- { CODEC_ID_DTS, 0x2001},
- { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd')},
- { CODEC_ID_EAC3, MKTAG('E', 'A', 'C', '3')},
- { CODEC_ID_H264, MKTAG('H', '2', '6', '4')},
- { CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'V')},
- { CODEC_ID_PCM_BLURAY, MKTAG('B', 'P', 'C', 'M')},
- { CODEC_ID_PCM_S8, MKTAG('t', 'w', 'o', 's')},
- { CODEC_ID_PCM_U8, 1},
- { CODEC_ID_PCM_S16BE, MKTAG('t', 'w', 'o', 's')},
- { CODEC_ID_PCM_S16LE, 1},
- { CODEC_ID_PCM_S24BE, MKTAG('i', 'n', '2', '4')},
- { CODEC_ID_PCM_S24LE, 1},
- { CODEC_ID_PCM_S32BE, MKTAG('i', 'n', '3', '2')},
- { CODEC_ID_PCM_S32LE, 1},
- { CODEC_ID_MP2, 0x50},
- { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'G', '2')},
- { CODEC_ID_TRUEHD, MKTAG('T', 'R', 'H', 'D')},
+ { AV_CODEC_ID_AAC, MKTAG('M', 'P', '4', 'A')},
+ { AV_CODEC_ID_AAC_LATM, MKTAG('M', 'P', '4', 'L')},
+ { AV_CODEC_ID_AC3, 0x2000},
+ { AV_CODEC_ID_ADPCM_IMA_AMV, MKTAG('A', 'M', 'V', 'A')},
+ { AV_CODEC_ID_BINKAUDIO_DCT, MKTAG('B', 'A', 'U', '1')},
+ { AV_CODEC_ID_BINKAUDIO_RDFT, MKTAG('B', 'A', 'U', '2')},
+ { AV_CODEC_ID_DTS, 0x2001},
+ { AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd')},
+ { AV_CODEC_ID_EAC3, MKTAG('E', 'A', 'C', '3')},
+ { AV_CODEC_ID_H264, MKTAG('H', '2', '6', '4')},
+ { AV_CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'V')},
+ { AV_CODEC_ID_PCM_BLURAY, MKTAG('B', 'P', 'C', 'M')},
+ { AV_CODEC_ID_PCM_S8, MKTAG('t', 'w', 'o', 's')},
+ { AV_CODEC_ID_PCM_U8, 1},
+ { AV_CODEC_ID_PCM_S16BE, MKTAG('t', 'w', 'o', 's')},
+ { AV_CODEC_ID_PCM_S16LE, 1},
+ { AV_CODEC_ID_PCM_S24BE, MKTAG('i', 'n', '2', '4')},
+ { AV_CODEC_ID_PCM_S24LE, 1},
+ { AV_CODEC_ID_PCM_S32BE, MKTAG('i', 'n', '3', '2')},
+ { AV_CODEC_ID_PCM_S32LE, 1},
+ { AV_CODEC_ID_MP2, 0x50},
+ { AV_CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'G', '2')},
+ { AV_CODEC_ID_TRUEHD, MKTAG('T', 'R', 'H', 'D')},
{ 0, 0 },
};
static const struct tag mp_bmp_tags[] = {
- { CODEC_ID_AMV, MKTAG('A', 'M', 'V', 'V')},
- { CODEC_ID_ANM, MKTAG('A', 'N', 'M', ' ')},
- { CODEC_ID_AVS, MKTAG('A', 'V', 'S', ' ')},
- { CODEC_ID_BETHSOFTVID, MKTAG('B', 'E', 'T', 'H')},
- { CODEC_ID_BFI, MKTAG('B', 'F', 'I', 'V')},
- { CODEC_ID_C93, MKTAG('C', '9', '3', 'V')},
- { CODEC_ID_CDGRAPHICS, MKTAG('C', 'D', 'G', 'R')},
- { CODEC_ID_DNXHD, MKTAG('A', 'V', 'd', 'n')},
- { CODEC_ID_DSICINVIDEO, MKTAG('D', 'C', 'I', 'V')},
- { CODEC_ID_DXA, MKTAG('D', 'X', 'A', '1')},
- { CODEC_ID_FLIC, MKTAG('F', 'L', 'I', 'C')},
- { CODEC_ID_IDCIN, MKTAG('I', 'D', 'C', 'I')},
- { CODEC_ID_INTERPLAY_VIDEO, MKTAG('I', 'N', 'P', 'V')},
- { CODEC_ID_JV, MKTAG('F', 'F', 'J', 'V')},
- { CODEC_ID_MDEC, MKTAG('M', 'D', 'E', 'C')},
- { CODEC_ID_MOTIONPIXELS, MKTAG('M', 'V', 'I', '1')},
- { CODEC_ID_NUV, MKTAG('N', 'U', 'V', '1')},
- { CODEC_ID_RL2, MKTAG('R', 'L', '2', 'V')},
- { CODEC_ID_ROQ, MKTAG('R', 'o', 'Q', 'V')},
- { CODEC_ID_RV10, MKTAG('R', 'V', '1', '0')},
- { CODEC_ID_RV20, MKTAG('R', 'V', '2', '0')},
- { CODEC_ID_RV30, MKTAG('R', 'V', '3', '0')},
- { CODEC_ID_RV40, MKTAG('R', 'V', '4', '0')},
- { CODEC_ID_SVQ3, MKTAG('S', 'V', 'Q', '3')},
- { CODEC_ID_TGV, MKTAG('f', 'V', 'G', 'T')},
- { CODEC_ID_THP, MKTAG('T', 'H', 'P', 'V')},
- { CODEC_ID_TIERTEXSEQVIDEO, MKTAG('T', 'S', 'E', 'Q')},
- { CODEC_ID_TXD, MKTAG('T', 'X', 'D', 'V')},
- { CODEC_ID_VP6A, MKTAG('V', 'P', '6', 'A')},
- { CODEC_ID_VMDVIDEO, MKTAG('V', 'M', 'D', 'V')},
- { CODEC_ID_WS_VQA, MKTAG('V', 'Q', 'A', 'V')},
- { CODEC_ID_XAN_WC3, MKTAG('W', 'C', '3', 'V')},
+ { AV_CODEC_ID_AMV, MKTAG('A', 'M', 'V', 'V')},
+ { AV_CODEC_ID_ANM, MKTAG('A', 'N', 'M', ' ')},
+ { AV_CODEC_ID_AVS, MKTAG('A', 'V', 'S', ' ')},
+ { AV_CODEC_ID_BETHSOFTVID, MKTAG('B', 'E', 'T', 'H')},
+ { AV_CODEC_ID_BFI, MKTAG('B', 'F', 'I', 'V')},
+ { AV_CODEC_ID_C93, MKTAG('C', '9', '3', 'V')},
+ { AV_CODEC_ID_CDGRAPHICS, MKTAG('C', 'D', 'G', 'R')},
+ { AV_CODEC_ID_DNXHD, MKTAG('A', 'V', 'd', 'n')},
+ { AV_CODEC_ID_DSICINVIDEO, MKTAG('D', 'C', 'I', 'V')},
+ { AV_CODEC_ID_DXA, MKTAG('D', 'X', 'A', '1')},
+ { AV_CODEC_ID_FLIC, MKTAG('F', 'L', 'I', 'C')},
+ { AV_CODEC_ID_IDCIN, MKTAG('I', 'D', 'C', 'I')},
+ { AV_CODEC_ID_INTERPLAY_VIDEO, MKTAG('I', 'N', 'P', 'V')},
+ { AV_CODEC_ID_JV, MKTAG('F', 'F', 'J', 'V')},
+ { AV_CODEC_ID_MDEC, MKTAG('M', 'D', 'E', 'C')},
+ { AV_CODEC_ID_MOTIONPIXELS, MKTAG('M', 'V', 'I', '1')},
+ { AV_CODEC_ID_NUV, MKTAG('N', 'U', 'V', '1')},
+ { AV_CODEC_ID_RL2, MKTAG('R', 'L', '2', 'V')},
+ { AV_CODEC_ID_ROQ, MKTAG('R', 'o', 'Q', 'V')},
+ { AV_CODEC_ID_RV10, MKTAG('R', 'V', '1', '0')},
+ { AV_CODEC_ID_RV20, MKTAG('R', 'V', '2', '0')},
+ { AV_CODEC_ID_RV30, MKTAG('R', 'V', '3', '0')},
+ { AV_CODEC_ID_RV40, MKTAG('R', 'V', '4', '0')},
+ { AV_CODEC_ID_SVQ3, MKTAG('S', 'V', 'Q', '3')},
+ { AV_CODEC_ID_TGV, MKTAG('f', 'V', 'G', 'T')},
+ { AV_CODEC_ID_THP, MKTAG('T', 'H', 'P', 'V')},
+ { AV_CODEC_ID_TIERTEXSEQVIDEO, MKTAG('T', 'S', 'E', 'Q')},
+ { AV_CODEC_ID_TXD, MKTAG('T', 'X', 'D', 'V')},
+ { AV_CODEC_ID_VP6A, MKTAG('V', 'P', '6', 'A')},
+ { AV_CODEC_ID_VMDVIDEO, MKTAG('V', 'M', 'D', 'V')},
+ { AV_CODEC_ID_WS_VQA, MKTAG('V', 'Q', 'A', 'V')},
+ { AV_CODEC_ID_XAN_WC3, MKTAG('W', 'C', '3', 'V')},
{ 0, 0 },
};
-static unsigned int codec_get_tag(const struct tag *tags, enum CodecID id)
+static unsigned int codec_get_tag(const struct tag *tags, enum AVCodecID id)
{
- while (tags->id != CODEC_ID_NONE) {
+ while (tags->id != AV_CODEC_ID_NONE) {
if (tags->id == id)
return tags->tag;
tags++;
@@ -134,12 +134,12 @@
return 0;
}
-unsigned int mp_taglist_override(enum CodecID id)
+unsigned int mp_taglist_override(enum AVCodecID id)
{
return codec_get_tag(mp_codecid_override_tags, id);
}
-unsigned int mp_taglist_video(enum CodecID id)
+unsigned int mp_taglist_video(enum AVCodecID id)
{
const struct AVCodecTag *tags[] = {avformat_get_riff_video_tags(), NULL };
unsigned int tag = av_codec_get_tag(tags, id);
@@ -148,7 +148,7 @@
return codec_get_tag(mp_bmp_tags, id);
}
-unsigned int mp_taglist_audio(enum CodecID id)
+unsigned int mp_taglist_audio(enum AVCodecID id)
{
const struct AVCodecTag *tags[] = {avformat_get_riff_audio_tags(), NULL };
unsigned int tag = av_codec_get_tag(tags, id);
Index: mplayer2-2.0-701-gd4c5b7f/libmpdemux/mp_taglists.h
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libmpdemux/mp_taglists.h 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libmpdemux/mp_taglists.h 2014-03-01 12:01:06.988511109 +0000
@@ -21,8 +21,8 @@
#include <libavcodec/avcodec.h>
-unsigned int mp_taglist_override(enum CodecID id);
-unsigned int mp_taglist_video(enum CodecID id);
-unsigned int mp_taglist_audio(enum CodecID id);
+unsigned int mp_taglist_override(enum AVCodecID id);
+unsigned int mp_taglist_video(enum AVCodecID id);
+unsigned int mp_taglist_audio(enum AVCodecID id);
#endif /* MPLAYER_MP_TAGLISTS_H */
Index: mplayer2-2.0-701-gd4c5b7f/libvo/vo_png.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/libvo/vo_png.c 2014-03-01 11:50:42.940295486 +0000
+++ mplayer2-2.0-701-gd4c5b7f/libvo/vo_png.c 2014-03-01 11:50:28.837951541 +0000
@@ -52,8 +52,6 @@
static int framenum;
static int use_alpha;
static AVCodecContext *avctx;
-static uint8_t *outbuffer;
-int outbuffer_size;
static int
config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
@@ -66,7 +64,7 @@
mp_msg(MSGT_VO,MSGL_DBG2, "PNG Compression level %i\n", z_compression);
uninit();
- struct AVCodec *png_codec = avcodec_find_encoder(CODEC_ID_PNG);
+ struct AVCodec *png_codec = avcodec_find_encoder(AV_CODEC_ID_PNG);
if (!png_codec)
goto error;
avctx = avcodec_alloc_context3(png_codec);
@@ -87,9 +85,10 @@
static uint32_t draw_image(mp_image_t* mpi){
+ AVPacket pkt = { 0 };
AVFrame pic;
int buffersize;
- int res;
+ int res, got_output;
char buf[100];
FILE *outfile;
@@ -105,22 +104,18 @@
pic.data[0] = mpi->planes[0];
pic.linesize[0] = mpi->stride[0];
- buffersize = mpi->w * mpi->h * 8;
- if (outbuffer_size < buffersize) {
- av_freep(&outbuffer);
- outbuffer = av_malloc(buffersize);
- outbuffer_size = buffersize;
- }
- res = avcodec_encode_video(avctx, outbuffer, outbuffer_size, &pic);
- if(res < 0){
+ res = avcodec_encode_video2(avctx, &pkt, &pic, &got_output);
+
+ if(res < 0 || !got_output){
mp_msg(MSGT_VO,MSGL_WARN, "[VO_PNG] Error in create_png.\n");
fclose(outfile);
return 1;
}
- fwrite(outbuffer, res, 1, outfile);
+ fwrite(pkt.data, pkt.size, 1, outfile);
fclose(outfile);
+ av_free_packet(&pkt);
return VO_TRUE;
}
@@ -157,8 +152,6 @@
if (avctx)
avcodec_close(avctx);
av_freep(&avctx);
- av_freep(&outbuffer);
- outbuffer_size = 0;
}
static void check_events(void){}
Index: mplayer2-2.0-701-gd4c5b7f/screenshot.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/screenshot.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/screenshot.c 2014-03-01 11:47:23.003420530 +0000
@@ -82,8 +82,9 @@
FILE *fp = NULL;
void *outbuffer = NULL;
int success = 0;
+ int got_output;
- struct AVCodec *png_codec = avcodec_find_encoder(CODEC_ID_PNG);
+ struct AVCodec *png_codec = avcodec_find_encoder(AV_CODEC_ID_PNG);
AVCodecContext *avctx = NULL;
if (!png_codec)
goto print_open_fail;
@@ -104,10 +105,8 @@
goto error_exit;
}
+ AVPacket pkt = { 0 };
size_t outbuffer_size = image->width * image->height * 3 * 2;
- outbuffer = malloc(outbuffer_size);
- if (!outbuffer)
- goto error_exit;
AVFrame *pic = ctx->pic;
avcodec_get_frame_defaults(pic);
@@ -115,8 +114,8 @@
pic->data[n] = image->planes[n];
pic->linesize[n] = image->stride[n];
}
- int size = avcodec_encode_video(avctx, outbuffer, outbuffer_size, pic);
- if (size < 1)
+ int ret = avcodec_encode_video2(avctx, &pkt, pic, &got_output);
+ if (ret < 0 || !got_output)
goto error_exit;
fp = fopen(fname, "wb");
@@ -126,8 +125,9 @@
goto error_exit;
}
- fwrite(outbuffer, size, 1, fp);
+ fwrite(pkt.data, pkt.size, 1, fp);
fflush(fp);
+ av_free_packet(&pkt);
if (ferror(fp))
goto error_exit;
@@ -139,7 +139,6 @@
av_free(avctx);
if (fp)
fclose(fp);
- free(outbuffer);
return success;
}
Index: mplayer2-2.0-701-gd4c5b7f/sub/sd_lavc.c
===================================================================
--- mplayer2-2.0-701-gd4c5b7f.orig/sub/sd_lavc.c 2013-01-12 13:19:07.000000000 +0000
+++ mplayer2-2.0-701-gd4c5b7f/sub/sd_lavc.c 2014-03-01 12:01:32.932124883 +0000
@@ -40,16 +40,16 @@
if (sh->initialized)
return 0;
struct sd_lavc_priv *priv = talloc_zero(NULL, struct sd_lavc_priv);
- enum CodecID cid = CODEC_ID_NONE;
+ enum AVCodecID cid = AV_CODEC_ID_NONE;
switch (sh->type) {
case 'b':
- cid = CODEC_ID_DVB_SUBTITLE; break;
+ cid = AV_CODEC_ID_DVB_SUBTITLE; break;
case 'p':
- cid = CODEC_ID_HDMV_PGS_SUBTITLE; break;
+ cid = AV_CODEC_ID_HDMV_PGS_SUBTITLE; break;
case 'x':
- cid = CODEC_ID_XSUB; break;
+ cid = AV_CODEC_ID_XSUB; break;
case 'v':
- cid = CODEC_ID_DVD_SUBTITLE; break;
+ cid = AV_CODEC_ID_DVD_SUBTITLE; break;
}
AVCodecContext *ctx = NULL;
AVCodec *sub_codec = avcodec_find_decoder(cid);