[FFmpeg-cvslog] mov: Trim dref absolute path
Vittorio Giovara
git at videolan.org
Wed Apr 13 17:22:32 CEST 2016
ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Mon Feb 15 21:44:07 2016 -0500| [d40cb726d271b0284642a1ba159eb26a5c579f77] | committer: Vittorio Giovara
mov: Trim dref absolute path
Samples produced by Omneon (Harmonic) store external references with
paths ending with 0s. Such movs cannot be loaded properly since every
0 is converted to '/', to keep the same parsing code for dref type 2
and type 18: this makes the external reference point to a non-existing
direactory, rather than to the actual referenced file.
Add a brief trimming loop that drops all ending 0s before trying to
parse the external reference path.
Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d40cb726d271b0284642a1ba159eb26a5c579f77
---
libavformat/mov.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 0dee5ec..a556aa7 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -554,6 +554,13 @@ static int mov_read_dref(MOVContext *c, AVIOContext *pb, MOVAtom atom)
memmove(dref->path, dref->path+volume_len, len);
dref->path[len] = 0;
}
+ // trim string of any ending zeros
+ for (j = len - 1; j >= 0; j--) {
+ if (dref->path[j] == 0)
+ len--;
+ else
+ break;
+ }
for (j = 0; j < len; j++)
if (dref->path[j] == ':' || dref->path[j] == 0)
dref->path[j] = '/';
More information about the ffmpeg-cvslog
mailing list