[FFmpeg-devel] [PATCH 2/2] lavf/avienc: Add xxpc entries to index

Michael Niedermayer michael at niedermayer.cc
Sat Mar 12 14:52:23 CET 2016


On Sat, Mar 12, 2016 at 02:36:59PM +0100, Mats Peterson wrote:
> On 03/12/2016 02:26 PM, Mats Peterson wrote:
> >On 03/12/2016 12:53 PM, Michael Niedermayer wrote:
> >>On Sat, Mar 12, 2016 at 07:14:16AM +0100, Mats Peterson wrote:
> >>>Here's an interesting one. Windows Media Player won't make any palette
> >>>changes without the xxpc chunks beeing indexed.
> >>>
> >>>Fixing the logic for reading and seeking with xxpc chunks in the
> >>>demuxer  is a future task. Now the muxing of video with xxpc chunks
> >>>works properly at least.
> >>>
> >>>Try playing the resulting test.avi file from the command line below
> >>>with Windows Media Player, with and without this patch.
> >>>
> >>>ffmpeg -i TOON.AVI -c:v copy -c:a copy test.avi
> >>>
> >>>Mats
> >>>
> >>>--
> >>>Mats Peterson
> >>>http://matsp888.no-ip.org/~mats/
> >>
> >>>  libavformat/avi.h            |    6 +++-
> >>>  libavformat/avienc.c         |   56
> >>>+++++++++++++++++++++++++++++++++----------
> >>>  tests/ref/lavf-fate/avi_cram |    4 +--
> >>>  3 files changed, 51 insertions(+), 15 deletions(-)
> >>>2cf2565f9e258ee1a2bfcb83e4f30ecb1c13296d
> >>>0002-Add-xxpc-entries-to-index.patch
> >>> From 50f6c1dd38f503e77d53e0e6cdbadfe511282126 Mon Sep 17 00:00:00 2001
> >>>From: Mats Peterson <matsp888 at yahoo.com>
> >>>Date: Sat, 12 Mar 2016 07:00:33 +0100
> >>>Subject: [PATCH 2/2] lavf/avienc: Add xxpc entries to index
> >>>
> >>>---
> >>>  libavformat/avi.h            |    6 ++++-
> >>>  libavformat/avienc.c         |   56
> >>>+++++++++++++++++++++++++++++++++---------
> >>>  tests/ref/lavf-fate/avi_cram |    4 +--
> >>>  3 files changed, 51 insertions(+), 15 deletions(-)
> >>>
> >>>diff --git a/libavformat/avi.h b/libavformat/avi.h
> >>>index 34da76f..af21f2c 100644
> >>>--- a/libavformat/avi.h
> >>>+++ b/libavformat/avi.h
> >>>@@ -32,7 +32,11 @@
> >>>  #define AVI_MASTER_INDEX_SIZE   256
> >>>  #define AVI_MAX_STREAM_COUNT    100
> >>>
> >>>+/* stream header flags */
> >>>+#define AVISF_VIDEO_PALCHANGES  0x00010000
> >>>+
> >>>  /* index flags */
> >>>-#define AVIIF_INDEX             0x10
> >>>+#define AVIIF_INDEX             0x00000010
> >>>+#define AVIIF_NO_TIME           0x00000100
> >>>
> >>>  #endif /* AVFORMAT_AVI_H */
> >>>diff --git a/libavformat/avienc.c b/libavformat/avienc.c
> >>>index ad50379..b731bc2 100644
> >>>--- a/libavformat/avienc.c
> >>>+++ b/libavformat/avienc.c
> >>>@@ -44,13 +44,14 @@
> >>>   */
> >>>
> >>>  typedef struct AVIIentry {
> >>>-    unsigned int flags, pos, len;
> >>>+    char tag[5];
> >>
> >>the tag should be 4 bytes
> >>5 is ugly, it requires padding and bloats the structure with a zero
> >>byte
> >>
> >
> >OK.
> >
> >>
> >>>+    unsigned int flags;
> >>>+    unsigned int pos;
> >>>+    unsigned int len;
> >>>  } AVIIentry;
> >>>
> >>>  #define AVI_INDEX_CLUSTER_SIZE 16384
> >>>
> >>>-#define AVISF_VIDEO_PALCHANGES 0x00010000
> >>>-
> >>>  typedef struct AVIIndex {
> >>>      int64_t     indx_start;
> >>>      int64_t     audio_strm_offset;
> >>
> >>>@@ -612,9 +613,13 @@ static int avi_write_idx1(AVFormatContext *s)
> >>>              }
> >>>              if (!empty) {
> >>>                  avist = s->streams[stream_id]->priv_data;
> >>>-                avi_stream2fourcc(tag, stream_id,
> >>>+                if (*ie->tag)
> >>
> >>==18406== Conditional jump or move depends on uninitialised value(s)
> >>==18406==    at 0x598D80: avi_write_idx1 (avienc.c:616)
> >>==18406==    by 0x599D6D: avi_write_trailer (avienc.c:859)
> >>==18406==    by 0x64A234: av_write_trailer (mux.c:1124)
> >>==18406==    by 0x43A729: transcode (ffmpeg.c:4173)
> >>==18406==    by 0x43ACE3: main (ffmpeg.c:4334)
> >>
> >
> >OK.
> 
> 
> It's not really uninitalised, is it? Since it isn't used by anything
> but my own code, it's all zero bytes, right?

after this patch snow encoding failed, i run valgrind and saw this
so there was something wrong, i dont know for sure if it was this


[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

For every action, there is an equal and opposite reaction. -- Newton
For every man jailed for a minor crime, theres one person more that
will hate the government, some of them will become terrorists.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160312/4698a890/attachment.sig>


More information about the ffmpeg-devel mailing list