diff mbox

[FFmpeg-devel] avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir

Message ID CADxeRwm3BKXLyN18hqmqYAQcOdFpx7Cj5QtskpMk1ZWdjqS0EA@mail.gmail.com
State Accepted
Headers show

Commit Message

Steven Liu Jan. 1, 2017, 12:24 p.m. UTC
2017-01-01 20:14 GMT+08:00 Bodecs Bela <bodecsb@vivanet.hu>:

>
>
> 2017.01.01. 12:57 keltezéssel, Steven Liu írta:
>
>> 2017-01-01 19:40 GMT+08:00 Bodecs Bela <bodecsb@vivanet.hu>:
>>
>> Dear All,
>>>
>>> current implementation of finding duplicated segment filenames may fail
>>> if
>>> use_localtime_mkdir and use_localtime are in effect and segment_filename
>>> option expression contains subdirectories with date/time specifiers in
>>> them.
>>> This patch fixes this false behaviour.
>>>
>>>
>>> thank you,
>>>
>>> Bela
>>>
>>>
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>>
>>> +static HLSSegment *find_segment_by_filename(HLSSegment *segment, const
>> char *filename)
>> +{
>> +    while (segment) {
>> +        if (!strcmp(segment->filename,filename))
>> +            return segment;
>> +        segment = segment->next;
>> +    }
>> +    return (HLSSegment *) NULL;
>> +}
>> +
>> use av_strcasecmp will better。
>>
> yes, I have changed it.
>
> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> ---
 libavformat/hlsenc.c | 50
++++++++++++++------------------------------------
 1 file changed, 14 insertions(+), 36 deletions(-)

double duration,
                               int64_t pos, int64_t size)
@@ -383,6 +393,10 @@ static int hls_append_segment(struct AVFormatContext
*s, HLSContext *hls, double
     if (hls->use_localtime_mkdir) {
         filename = hls->avf->filename;
     }
+    if (find_segment_by_filename(hls->segments, filename)
+        || find_segment_by_filename(hls->old_segments, en->filename)) {
+        av_log(hls, AV_LOG_WARNING, "Duplicated segment filename detected:
%s\n", filename);
+    }
     av_strlcpy(en->filename, filename, sizeof(en->filename));

     if(hls->has_subtitle)
@@ -659,38 +673,6 @@ fail:
     return ret;
 }

-static HLSSegment *find_segment_by_filename(HLSSegment *segment, const
char *filename)
-{
-    /* filename may contain rel/abs path, but segments store only basename
*/
-    char *p = NULL, *dirname = NULL, *path = NULL;
-    int path_size;
-    HLSSegment *ret_segment = NULL;
-    dirname = av_strdup(filename);
-    if (!dirname)
-        return NULL;
-    p = (char *)av_basename(dirname); // av_dirname would return . in case
of no dir
-    *p = '\0'; // maybe empty
-
-    while (segment) {
-        path_size = strlen(dirname) + strlen(segment->filename) + 1;
-        path = av_malloc(path_size);
-        if (!path)
-            goto end;
-        av_strlcpy(path, dirname, path_size);
-        av_strlcat(path, segment->filename, path_size);
-        if (!strcmp(path,filename)) {
-            ret_segment = segment;
-            av_free(path);
-            goto end;
-        }
-        av_free(path);
-        segment = segment->next;
-    }
-end:
-    av_free(dirname);
-    return ret_segment;
-}
-
 static int hls_start(AVFormatContext *s)
 {
     HLSContext *c = s->priv_data;
@@ -736,10 +718,6 @@ static int hls_start(AVFormatContext *s)
                 }
                 av_free(filename);
             }
-            if (find_segment_by_filename(c->segments, oc->filename)
-                || find_segment_by_filename(c->old_segments,
oc->filename)) {
-                av_log(c, AV_LOG_WARNING, "Duplicated segment filename
detected: %s\n", oc->filename);
-            }
             if (c->use_localtime_mkdir) {
                 const char *dir;
                 char *fn_copy = av_strdup(oc->filename);

Comments

Marton Balint Jan. 1, 2017, 1:01 p.m. UTC | #1
On Sun, 1 Jan 2017, Steven Liu wrote:

>
> applied!
>

Steven, any reason you are overriding the "committer" field? I think what 
people typically do when pushing patches is that they only keep the 
authorship of the original owner, and the comitter remains the person who 
actually pushes the patch, in your case it should be you :).

Thanks,
Marton
Steven Liu Jan. 1, 2017, 1:22 p.m. UTC | #2
2017-01-01 21:01 GMT+08:00 Marton Balint <cus@passwd.hu>:

>
> On Sun, 1 Jan 2017, Steven Liu wrote:
>
>
>> applied!
>>
>>
> Steven, any reason you are overriding the "committer" field? I think what
> people typically do when pushing patches is that they only keep the
> authorship of the original owner, and the comitter remains the person who
> actually pushes the patch, in your case it should be you :).
>

Marton,

Author: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>

Patch be merged by Steven Liu, and Committer is Steven Liu
Any problem or any rules?

>
> Thanks,
> Marton
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
Steven Liu Jan. 1, 2017, 1:31 p.m. UTC | #3
2017-01-01 21:22 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:

>
>
> 2017-01-01 21:01 GMT+08:00 Marton Balint <cus@passwd.hu>:
>
>>
>> On Sun, 1 Jan 2017, Steven Liu wrote:
>>
>>
>>> applied!
>>>
>>>
>> Steven, any reason you are overriding the "committer" field? I think what
>> people typically do when pushing patches is that they only keep the
>> authorship of the original owner, and the comitter remains the person who
>> actually pushes the patch, in your case it should be you :).
>>
>
> Marton,
>
> Author: Bela Bodecs <bodecsb@vivanet.hu>
> Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
>
> Patch be merged by Steven Liu, and Committer is Steven Liu
> Any problem or any rules?
>
>>
>> Thanks,
>> Marton
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>
>

commit 03a69bd897e49a636a7c2f044f74fb96288955d4
Author: Bela Bodecs <bodecsb@vivanet.hu>
Date:   Sun Jan 1 20:22:34 2017 +0800

    avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir

    Current implementation of finding duplicate segment filenames may fail
    if use_localtime_mkdir and use_localtime are in effect and
    segment_filename option expression contains subdirectories with
    date/time specifiers. This patch fixes this false behaviour.

    Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
    Signed-off-by: Steven Liu <lq@chinaffmpeg.org>

commit 8fd3e02eee87e0830fa7ab1dbb65160e5be76d20
Author: Bela Bodecs <bodecsb@vivanet.hu>
Date:   Sun Jan 1 11:00:45 2017 +0800

    libavformat/hlsenc: default segment name and use_localtime

    in hlcenc.c, in the hls_write_header() function the default format
    string for strftime() function contains %s specifier when use_localtime
    is true. This %s specifier will insert the seconds since EPOCH. But %s
    is not available on all system/environment. This patch check %s
    availabilty at runtine and alter the default format string if necessary.

    Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
    Signed-off-by: Steven Liu <lq@chinaffmpeg.org>

commit 7525517593dff427021c893a1b21333510b7803b
Author: Michael Niedermayer <michael@niedermayer.cc>
Date:   Thu Dec 29 00:34:57 2016 +0100

    libavutil/random_seed: Ensure that get_generic_seed() spends at least
1/32 sec gathering entropy

    This may fix the failures on windows

    Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>

commit 5dbce5120b4e05dd6d784e7ed9921c1f276acea3
Author: Moritz Barsnick <barsnick@gmx.net>
Date:   Fri Dec 30 18:08:14 2016 +0100

    doc: document cutoff option to ac3 and adjust the option's global
documentation

    cutoff is implemented as an option global to lavc, but supported only
    by a few encoders. This fact is now reflected in its documentation.
ac3's
    support of this option is added for completeness.

    Signed-off-by: Moritz Barsnick <barsnick@gmx.net>
    Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>




the commit message is here .
Marton Balint Jan. 1, 2017, 2:23 p.m. UTC | #4
On Sun, 1 Jan 2017, Steven Liu wrote:

> 
> 
> 2017-01-01 21:22 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:
> 
>
>       2017-01-01 21:01 GMT+08:00 Marton Balint <cus@passwd.hu>:
>
>             On Sun, 1 Jan 2017, Steven Liu wrote:
> 
>
>                   applied!
> 
>
>             Steven, any reason you are overriding the "committer" field? I think what people typically do when pushing patches is that they only keep the authorship of the original owner, and the
>             comitter remains the person who actually pushes the patch, in your case it should be you :).
> 
> 
> Marton,
> 
> Author: Bela Bodecs <bodecsb@vivanet.hu>
> Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
> 
> Patch be merged by Steven Liu, and Committer is Steven Liu
> Any problem or any rules? 

http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=03a69bd897e49a636a7c2f044f74fb96288955d4

Author and Committer is both Bela Bodecs. The comitter is supposed to be 
you IMHO.

> commit 03a69bd897e49a636a7c2f044f74fb96288955d4
> Author: Bela Bodecs <bodecsb@vivanet.hu>
> Date:   Sun Jan 1 20:22:34 2017 +0800
> 
>     avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir
>     
>     Current implementation of finding duplicate segment filenames may fail
>     if use_localtime_mkdir and use_localtime are in effect and
>     segment_filename option expression contains subdirectories with
>     date/time specifiers. This patch fixes this false behaviour.
>     
>     Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
>     Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
>

git log --pretty=full shows the committer as well, and not just the 
author:

commit 03a69bd897e49a636a7c2f044f74fb96288955d4
Author: Bela Bodecs <bodecsb@vivanet.hu>
Commit: Bela Bodecs <bodecsb@vivanet.hu>

     avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir

     Current implementation of finding duplicate segment filenames may fail
     if use_localtime_mkdir and use_localtime are in effect and
     segment_filename option expression contains subdirectories with
     date/time specifiers. This patch fixes this false behaviour.

     Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
     Signed-off-by: Steven Liu <lq@chinaffmpeg.org>


Regards,
Marton
Steven Liu Jan. 1, 2017, 2:25 p.m. UTC | #5
2017-01-01 22:23 GMT+08:00 Marton Balint <cus@passwd.hu>:

>
> On Sun, 1 Jan 2017, Steven Liu wrote:
>
>
>>
>> 2017-01-01 21:22 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:
>>
>>
>>       2017-01-01 21:01 GMT+08:00 Marton Balint <cus@passwd.hu>:
>>
>>             On Sun, 1 Jan 2017, Steven Liu wrote:
>>
>>
>>                   applied!
>>
>>
>>             Steven, any reason you are overriding the "committer" field?
>> I think what people typically do when pushing patches is that they only
>> keep the authorship of the original owner, and the
>>             comitter remains the person who actually pushes the patch, in
>> your case it should be you :).
>>
>>
>> Marton,
>>
>> Author: Bela Bodecs <bodecsb@vivanet.hu>
>> Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
>>
>> Patch be merged by Steven Liu, and Committer is Steven Liu
>> Any problem or any rules?
>>
>
> http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=03a69bd
> 897e49a636a7c2f044f74fb96288955d4
>
> Author and Committer is both Bela Bodecs. The comitter is supposed to be
> you IMHO.
>
> commit 03a69bd897e49a636a7c2f044f74fb96288955d4
>> Author: Bela Bodecs <bodecsb@vivanet.hu>
>> Date:   Sun Jan 1 20:22:34 2017 +0800
>>
>>     avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir
>>
>>     Current implementation of finding duplicate segment filenames may fail
>>     if use_localtime_mkdir and use_localtime are in effect and
>>     segment_filename option expression contains subdirectories with
>>     date/time specifiers. This patch fixes this false behaviour.
>>
>>     Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
>>     Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
>>
>>
> git log --pretty=full shows the committer as well, and not just the author:
>
> commit 03a69bd897e49a636a7c2f044f74fb96288955d4
> Author: Bela Bodecs <bodecsb@vivanet.hu>
> Commit: Bela Bodecs <bodecsb@vivanet.hu>

Okay, I see, Thanks alot :)


>
>
>     avformat/hlsenc: Duplicated segment filenames and use_localtime_mkdir
>
>     Current implementation of finding duplicate segment filenames may fail
>     if use_localtime_mkdir and use_localtime are in effect and
>     segment_filename option expression contains subdirectories with
>     date/time specifiers. This patch fixes this false behaviour.
>
>     Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
>     Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
>
>
> Regards,
> Marton
diff mbox

Patch

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 57fc9c1..591ab73 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -367,6 +367,16 @@  static int hls_mux_init(AVFormatContext *s)
     return 0;
 }

+static HLSSegment *find_segment_by_filename(HLSSegment *segment, const
char *filename)
+{
+    while (segment) {
+        if (!av_strcasecmp(segment->filename,filename))
+            return segment;
+        segment = segment->next;
+    }
+    return (HLSSegment *) NULL;
+}
+
 /* Create a new segment and append it to the segment list */
 static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls,