On Mon, Dec 21, 2015 at 06:04:28PM +0100, Mats Peterson wrote: > Alright then, let's see how this turns out: > > --- > libavformat/Makefile | 1 + > libavformat/matroskadec.c | 30 ++++++++++++- > libavformat/mov.c | 95 ++++++++++------------------------------- > libavformat/qtpalette.c | 102 > +++++++++++++++++++++++++++++++++++++++++++++ > libavformat/qtpalette.h | 2 + > 5 files changed, 155 insertions(+), 75 deletions(-) > create mode 100644 libavformat/qtpalette.c > > diff --git a/libavformat/Makefile b/libavformat/Makefile > index 110e9e3..e03c73e 100644 > --- a/libavformat/Makefile > +++ b/libavformat/Makefile > @@ -18,6 +18,7 @@ OBJS = allformats.o \ > mux.o \ > options.o \ > os_support.o \ > + qtpalette.o \ > riff.o \ > sdp.o \ > url.o \ > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c > index c574749..f94f7fb 100644 > --- a/libavformat/matroskadec.c > +++ b/libavformat/matroskadec.c > @@ -64,6 +64,8 @@ > #include <zlib.h> > #endif > > +#include "qtpalette.h" > + > typedef enum { > EBML_NONE, > EBML_UINT, > @@ -312,6 +314,9 @@ typedef struct MatroskaDemuxContext { > > /* WebM DASH Manifest live flag/ */ > int is_live; > + > + uint32_t palette[256]; > + int has_palette; > } MatroskaDemuxContext; > > typedef struct MatroskaBlock { > @@ -1856,7 +1861,7 @@ static int matroska_parse_tracks(AVFormatContext *s) > fourcc = st->codec->codec_tag; > extradata_offset = FFMIN(track->codec_priv.size, 18); > } else if (!strcmp(track->codec_id, "A_QUICKTIME") > - && (track->codec_priv.size >= 86) > + && (track->codec_priv.size >= 36) > && (track->codec_priv.data)) { > fourcc = AV_RL32(track->codec_priv.data + 4); > codec_id = ff_codec_get_id(ff_codec_movaudio_tags, fourcc); > @@ -1865,7 +1870,7 @@ static int matroska_parse_tracks(AVFormatContext *s) > codec_id = ff_codec_get_id(ff_codec_movaudio_tags, > fourcc); > } > } else if (!strcmp(track->codec_id, "V_QUICKTIME") && > - (track->codec_priv.size >= 21) && > + (track->codec_priv.size >= 86) && > (track->codec_priv.data)) { > fourcc = AV_RL32(track->codec_priv.data + 4); > codec_id = ff_codec_get_id(ff_codec_movvideo_tags, fourcc); > @@ -1881,6 +1886,18 @@ static int matroska_parse_tracks(AVFormatContext *s) > av_log(matroska->ctx, AV_LOG_ERROR, > "mov FourCC not found %s.\n", buf); > } > + bit_depth = AV_RB16(track->codec_priv.data + 82); > + if (get_qtpalette(codec_id, track->codec_priv.data + 16, > + matroska->palette)) { > + bit_depth &= 0x1F; > + /* Behave like V_MS/VFW/FOURCC; copy the palette to > + * extradata */ > + if (! (extradata = av_malloc(AVPALETTE_SIZE))) > + return AVERROR(ENOMEM); > + memcpy(extradata, matroska->palette, AVPALETTE_SIZE); > + extradata_size = AVPALETTE_SIZE; > + matroska->has_palette = 1; > + } > } else if (codec_id == AV_CODEC_ID_PCM_S16BE) { > switch (track->audio.bitdepth) { > case 8: > @@ -2326,6 +2343,15 @@ static int > matroska_deliver_packet(MatroskaDemuxContext *matroska,
the patch is corrupted by newlines attaching the patch uncompressed should solve this disabling automatic line/word wraping in your editor instead might as well Applying: libavformat/matroskadec.c, mov.c/qtpalette.c: Fix issue with, palettized QuickTime video in Matroska fatal: corrupt patch at line 57 Repository lacks necessary blobs to fall back on 3-way merge. Cannot fall back to three-way merge. Patch failed at 0001 libavformat/matroskadec.c, mov.c/qtpalette.c: Fix issue with, palettized QuickTime video in Matroska When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort". [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Why not whip the teacher when the pupil misbehaves? -- Diogenes of Sinope
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel