[FFmpeg-devel] [PATCH] avformat/fivdec: cached keyframes before video or audio stream was created
Steven Liu
lingjiujianke at gmail.com
Thu Jul 21 05:44:52 EEST 2016
2016-07-21 10:35 GMT+08:00 XinZheng Zhang <zhangxzheng at gmail.com>:
> I apologize about my English and let me re-arrange my words.
> The current realization would result in the loss of all key frame
> indices from all the current video frames,
> which would lead to the failure of seeking in FLVs.
> My current patch will cache all key frame indices without creating any
> video streams,
> and put in all those immediately after creating any relevant video streams.
>
> I found that there has something error with my `egrep`,
> caused all the patches (include applied patch) could not be checked
> successfully.
> The error message is same to the log which Steven Liu posted.
> Here is my platform message:
> egrep (BSD grep) 2.5.1-FreeBSD
> osx 10.11.4
>
> Your patch is passed by tool/patcheck,
and is have read your patch, it read the keyframe ts and pos from metadata,
is see,
Perhaps it's usefull when the flv is TOO BIG,
Thanks!
>
> I will resend a new patch without the extra new line.
>
> On Thu, Jul 21, 2016 at 7:39 AM, Steven Liu <lingjiujianke at gmail.com>
> wrote:
> > 2016-07-21 7:29 GMT+08:00 Steven Liu <lingjiujianke at gmail.com>:
> >
> >>
> >>
> >> 2016-07-21 5:03 GMT+08:00 Moritz Barsnick <barsnick at gmx.net>:
> >>
> >>> On Thu, Jul 21, 2016 at 00:06:44 +0800, zhangxinzheng wrote:
> >>>
> >>> > Subject: [FFmpeg-devel] [PATCH] avformat/fivdec: cached keyframes
> >>> before video or audio stream was created
> >>> ^^^ flv
> >>>
> >>> > There has an error when seeking in a flv file, which key frames was
> >>> > sorted before video frame.
> >>> > This ensures that all the key frames was cached, and add to
> >>> > corresponding stream when it was created.
> >>>
> >>> Thanks to the grammar, I don't understand the intent of the patch.
> >>> (Don't get me wrong, I'm not scorning your English, but it needs to be
> >>> improved.)
> >>>
> >> Hi Moritz,
> >> Perhaps he want to create a keyframe index for flv file, to seek flv
> >> keyframe.
> >>
> >>
> >>
> >>> > #define RESYNC_BUFFER_SIZE (1<<20)
> >>> >
> >>> > +
> >>> > +typedef struct FLVKeyFrame {
> >>>
> >>> Why the extra newline?
> >>
> >>
> >> Hi Zhang Xinzheng ,
> >>
> >> You should check the patch use the tool at ./tools/patcheck .
> >> Please reading
> >> http://ffmpeg.org/developer.html#toc-Submitting-patches-1 .
> >>
> > ok, I make a mistake, the patchcheck can not check the newline
> >
> >
> >
> > localhost:ffmpeg StevenLiu$ cat new_patch.patch | head -n 30
> > ---
> > libavformat/flvdec.c | 52
> > +++++++++++++++++++++++++++++++++++++++++++++-------
> > 1 file changed, 45 insertions(+), 7 deletions(-)
> >
> > diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
> > index 2bf1e05..8a73b68 100644
> > --- a/libavformat/flvdec.c
> > +++ b/libavformat/flvdec.c
> > @@ -30,6 +30,7 @@
> > #include "libavutil/opt.h"
> > #include "libavutil/intfloat.h"
> > #include "libavutil/mathematics.h"
> > +#include "libavutil/mem.h"
> > #include "libavcodec/bytestream.h"
> > #include "libavcodec/mpeg4audio.h"
> > #include "avformat.h"
> > @@ -41,6 +42,12 @@
> >
> > #define RESYNC_BUFFER_SIZE (1<<20)
> >
> > +
> > +typedef struct FLVKeyFrame {
> > + int64_t pos;
> > + int64_t timestamp;
> > +} FLVKeyFrame;
> > +
> > typedef struct FLVContext {
> > const AVClass *class; ///< Class for private options.
> > int trust_metadata; ///< configure streams according onMetaData
> > @@ -61,6 +68,10 @@ typedef struct FLVContext {
> > localhost:ffmpeg StevenLiu$
> > localhost:ffmpeg StevenLiu$ ./tools/patcheck new_patch.patch
> > patCHeck 1e10.0
> > This tool is intended to help a human check/review patches. It is very
> far
> > from
> > being free of false positives and negatives, and its output are just
> hints
> > of what
> > may or may not be bad. When you use it and it misses something or detects
> > something wrong, fix it and send a patch to the ffmpeg-devel mailing
> list.
> > License: GPL, Author: Michael Niedermayer
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > egrep: empty (sub)expression
> > xargs: illegal option -- d
> > usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J
> replstr]
> > [-L number] [-n number [-x]] [-P maxprocs] [-s size]
> > [utility [argument ...]]
> >
> > Missing changelog entry (ignore if minor change)
> > egrep: empty (sub)expression
> > localhost:ffmpeg StevenLiu$
>
>
More information about the ffmpeg-devel
mailing list