[FFmpeg-devel] [PATCH 1/2] aformat/hlsenc: fix typo of AV_TIME_BASE
the code use 100 * duration, use AV_TIME_BASE replace 100 Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..f070bc3 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -501,7 +501,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(AV_TIME_BASE * duration)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/2 v2] avformat/hlsenc: fix typo of AV_TIME_BASE
the code use 100 * duration, use AV_TIME_BASE replace 100 Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..f070bc3 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -501,7 +501,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(AV_TIME_BASE * duration)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/2] avformat/flvenc: refine the flvenc shift_data code
refine the flvenc shift_data move data option Signed-off-by: Steven Liu --- libavformat/flvenc.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 5714321..d7506c5 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -626,13 +626,15 @@ static int shift_data(AVFormatContext *s) avio_seek(read_pb, flv->keyframes_info_offset, SEEK_SET); pos = avio_tell(read_pb); -/* shift data by chunk of at most keyframe *filepositions* and *times* size */ +#define READ_BLOCK do { \ read_size[read_buf_id] = avio_read(read_pb, read_buf[read_buf_id], metadata_size); \ -read_buf_id ^= 1; -do { +read_buf_id ^= 1; \ +} while (0) -read_size[read_buf_id] = avio_read(read_pb, read_buf[read_buf_id], metadata_size); \ -read_buf_id ^= 1; +/* shift data by chunk of at most keyframe *filepositions* and *times* size */ +READ_BLOCK; +do { +READ_BLOCK; n = read_size[read_buf_id]; if (n < 0) break; -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] aformat/hlsenc: fix typo of AV_TIME_BASE
2017-01-23 17:04 GMT+08:00 Steven Liu : > the code use 100 * duration, use AV_TIME_BASE replace 100 > > Signed-off-by: Steven Liu > --- > libavformat/hlsenc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index 85d3955..f070bc3 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -501,7 +501,7 @@ static int hls_append_segment(struct AVFormatContext > *s, HLSContext *hls, double > return AVERROR(ENOMEM); > } > if (replace_int_data_in_filename(hls->avf->filename, > sizeof(hls->avf->filename), > -filename, 't', (int64_t)round(100 * duration)) < 1) { > +filename, 't', (int64_t)round(AV_TIME_BASE * duration)) > < 1) { > av_log(hls, AV_LOG_ERROR, > "Invalid second level segment filename template > '%s', " > "you can try to remove second_level_segment_time > flag\n", > -- > 2.10.1 (Apple Git-78) > > > Ignore this patch please, i have sent v2. > > ___ > 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
[FFmpeg-devel] [PATCH] avformat/hlsenc: improve to write m3u8 head block
Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 34 +++--- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index f070bc3..df482ac 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -659,6 +659,19 @@ static void set_http_options(AVDictionary **options, HLSContext *c) av_dict_set(options, "method", c->method, 0); } +static void write_m3u8_head_block(HLSContext *hls, AVIOContext *out, int version, + int target_duration, int64_t sequence) +{ +avio_printf(out, "#EXTM3U\n"); +avio_printf(out, "#EXT-X-VERSION:%d\n", version); +if (hls->allowcache == 0 || hls->allowcache == 1) { +avio_printf(out, "#EXT-X-ALLOW-CACHE:%s\n", hls->allowcache == 0 ? "NO" : "YES"); +} +avio_printf(out, "#EXT-X-TARGETDURATION:%d\n", target_duration); +avio_printf(out, "#EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); +av_log(hls, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); +} + static int hls_window(AVFormatContext *s, int last) { HLSContext *hls = s->priv_data; @@ -698,21 +711,13 @@ static int hls_window(AVFormatContext *s, int last) } hls->discontinuity_set = 0; -avio_printf(out, "#EXTM3U\n"); -avio_printf(out, "#EXT-X-VERSION:%d\n", version); -if (hls->allowcache == 0 || hls->allowcache == 1) { -avio_printf(out, "#EXT-X-ALLOW-CACHE:%s\n", hls->allowcache == 0 ? "NO" : "YES"); -} -avio_printf(out, "#EXT-X-TARGETDURATION:%d\n", target_duration); -avio_printf(out, "#EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); +write_m3u8_head_block(hls, out, version, target_duration, sequence); if (hls->pl_type == PLAYLIST_TYPE_EVENT) { avio_printf(out, "#EXT-X-PLAYLIST-TYPE:EVENT\n"); } else if (hls->pl_type == PLAYLIST_TYPE_VOD) { avio_printf(out, "#EXT-X-PLAYLIST-TYPE:VOD\n"); } -av_log(s, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", - sequence); if((hls->flags & HLS_DISCONT_START) && sequence==hls->start_sequence && hls->discontinuity_set==0 ){ avio_printf(out, "#EXT-X-DISCONTINUITY\n"); hls->discontinuity_set = 1; @@ -774,16 +779,7 @@ static int hls_window(AVFormatContext *s, int last) if( hls->vtt_m3u8_name ) { if ((ret = s->io_open(s, &sub_out, hls->vtt_m3u8_name, AVIO_FLAG_WRITE, &options)) < 0) goto fail; -avio_printf(sub_out, "#EXTM3U\n"); -avio_printf(sub_out, "#EXT-X-VERSION:%d\n", version); -if (hls->allowcache == 0 || hls->allowcache == 1) { -avio_printf(sub_out, "#EXT-X-ALLOW-CACHE:%s\n", hls->allowcache == 0 ? "NO" : "YES"); -} -avio_printf(sub_out, "#EXT-X-TARGETDURATION:%d\n", target_duration); -avio_printf(sub_out, "#EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); - -av_log(s, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", - sequence); +write_m3u8_head_block(hls, sub_out, version, target_duration, sequence); for (en = hls->segments; en; en = en->next) { avio_printf(sub_out, "#EXTINF:%f,\n", en->duration); -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] ff_rtmp_packet_write do not allow channel_id larger than 64 when send chunk with header type 3.
Although ffmpeg use internel defined video and audio channel ids that are than less than 64, I think it's better to patch ff_rtmp_packet_write write chunk logic for more clearness? Signed-off-by: Wentao --- libavformat/rtmppkt.c | 31 +++ 1 files changed, 19 insertions(+), 12 deletions(-) diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c index cde0da7..51288ad 100644 --- a/libavformat/rtmppkt.c +++ b/libavformat/rtmppkt.c @@ -310,6 +310,18 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size, } } +static void ff_rtmp_packet_write_chunk_basic_header(uint8_t **p, int mode, int channel_id) { +if (channel_id < 64) { +bytestream_put_byte(p, channel_id | (mode << 6)); +} else if (channel_id < 64 + 256) { +bytestream_put_byte(p, 0 | (mode << 6)); +bytestream_put_byte(p, channel_id - 64); +} else { +bytestream_put_byte(p, 1 | (mode << 6)); +bytestream_put_le16(p, channel_id - 64); +} +} + int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt, int chunk_size, RTMPPacket **prev_pkt_ptr, int *nb_prev_pkt) @@ -354,15 +366,8 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt, } } -if (pkt->channel_id < 64) { -bytestream_put_byte(&p, pkt->channel_id | (mode << 6)); -} else if (pkt->channel_id < 64 + 256) { -bytestream_put_byte(&p, 0 | (mode << 6)); -bytestream_put_byte(&p, pkt->channel_id - 64); -} else { -bytestream_put_byte(&p, 1 | (mode << 6)); -bytestream_put_le16(&p, pkt->channel_id - 64); -} +ff_rtmp_packet_write_chunk_basic_header(&p, mode, pkt->channel_id); + if (mode != RTMP_PS_ONEBYTE) { bytestream_put_be24(&p, pkt->ts_field); if (mode != RTMP_PS_FOURBYTES) { @@ -391,10 +396,12 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt, return ret; off += towrite; if (off < pkt->size) { -uint8_t marker = 0xC0 | pkt->channel_id; -if ((ret = ffurl_write(h, &marker, 1)) < 0) +p = pkt_hdr; +ff_rtmp_packet_write_chunk_basic_header(&p, RTMP_PS_ONEBYTE, pkt->channel_id); +if ((ret = ffurl_write(h, pkt_hdr, p - pkt_hdr)) < 0) return ret; -written++; +written += p - pkt_hdr; + if (pkt->ts_field == 0xFF) { uint8_t ts_header[4]; AV_WB32(ts_header, timestamp); -- 1.7.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] Implemented h264 timing SEI info to ffprobe. Review process?
On Sun, 22 Jan 2017 20:31:36 +0100 Jordi Cenzano wrote: > Hi, I'm and old user of ffmpeg but I'm new in this community. So first of > all let me congrat you for your work, ffmpeg has been always a great tool > for me. > > I added a new small functionality to ffprobe, now any user can have frame > SEI timing info available in ffprobe output (useful to read SMPTE time > code). > > Since this is NOT a patch I don't know which is the best way to submit my > changes for review, for now I created this PR against a FFmpeg forked repo: > https://github.com/jordicenzano/FFmpeg/pull/1 Send it as patch, either via "git send-email", or as attached text file produced by "git format-patch". ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/3] avformat/avienc: add reserve_index_space option
On 20.01.2017 21:02, Michael Niedermayer wrote: On Fri, Jan 20, 2017 at 05:06:59PM +0100, Tobias Rapp wrote: On 20.01.2017 15:56, Tobias Rapp wrote: On 19.01.2017 18:32, Michael Niedermayer wrote: On Wed, Jan 18, 2017 at 10:27:02AM +0100, Tobias Rapp wrote: Allows the user to reserve space for the ODML master index. A sufficient sized master index in the AVI header avoids storing follow-up master indexes within the 'movi' data later. If the option is omitted or zero the index size is estimated from output duration and bitrate. A worst-case bitrate for video streams is assumed in case it is not available. Note: fate reference files changed because the video stream had zero bitrate before and is guessed now. Signed-off-by: Tobias Rapp --- libavformat/avi.h | 1 - libavformat/avienc.c| 77 ++--- libavformat/version.h | 2 +- tests/ref/fate/mpeg4-bsf-unpack-bframes | 2 +- tests/ref/lavf-fate/avi_cram| 2 +- 5 files changed, 74 insertions(+), 10 deletions(-) this breaks segment: ./ffmpeg -i lena.pnm -f segment test%d.avi possibly related to avi_init() Yes, I can reproduce the problem when going back to Git master and just adding a dummy init (see attached diff). Not sure how to fix this, other muxers also have an init but seem to work fine (mkv) ... Apparently the codec_tag is cleared in seg_write_header() around line 811: [...] See http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/segment.c;hb=HEAD#l811 If .init is unset, the header is written before the codec_tag is cleared. If .init is set, it is written after these lines. the return code of your init function is wrong i think Thanks for the hint. Changed the return value to "1" and now avi_write_header() keeps being executed before the codec_tag is cleared in seg_write_header(). Attached an updated version of the patch. also this patch causes a 1 byte difference in the output of: ./ffmpeg -i ~/tickets/1116/AVI-RLE_MP3.avi -vcodec copy -an out2.avi is that intended ? Yes, it is expected in this case. The video stream has a reported bitrate of "0" which was used as-is for the "dwMaxBytesPerSec" field in the "avih" chunk before. Now the field is changed due to the worst-case bitrate guessing (similar to the FATE reference file changes). A log message hint is printed when adding "-loglevel debug" and maybe it should be made more prominent (AV_LOG_WARNING?) but there is not much a user can do and I think it's unlikely it has a negative effect on players. Regards, Tobias >From 4cc70ffdeb7eeb60e7bbb725bd5885dcacf968d2 Mon Sep 17 00:00:00 2001 From: Tobias Rapp Date: Wed, 4 Jan 2017 15:31:29 +0100 Subject: [PATCH 2/3] avformat/avienc: add reserve_index_space option Allows the user to reserve space for the ODML master index. A sufficient sized master index in the AVI header avoids storing follow-up master indexes within the 'movi' data later. If the option is omitted or zero the index size is estimated from output duration and bitrate. A worst-case bitrate for video streams is assumed in case it is not available. Note: fate reference files changed because the video stream had zero bitrate before and is guessed now. Signed-off-by: Tobias Rapp --- libavformat/avi.h | 1 - libavformat/avienc.c| 77 ++--- libavformat/version.h | 2 +- tests/ref/fate/mpeg4-bsf-unpack-bframes | 2 +- tests/ref/lavf-fate/avi_cram| 2 +- 5 files changed, 74 insertions(+), 10 deletions(-) diff --git a/libavformat/avi.h b/libavformat/avi.h index af21f2c..b1711f0 100644 --- a/libavformat/avi.h +++ b/libavformat/avi.h @@ -29,7 +29,6 @@ #define AVIF_COPYRIGHTED0x0002 #define AVI_MAX_RIFF_SIZE 0x4000LL -#define AVI_MASTER_INDEX_SIZE 256 #define AVI_MAX_STREAM_COUNT100 /* stream header flags */ diff --git a/libavformat/avienc.c b/libavformat/avienc.c index fd16fff..5d4ec72 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -21,6 +21,8 @@ //#define DEBUG +#include + #include "avformat.h" #include "internal.h" #include "avi.h" @@ -29,6 +31,7 @@ #include "mpegts.h" #include "libavformat/avlanguage.h" #include "libavutil/avstring.h" +#include "libavutil/avutil.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/dict.h" @@ -51,6 +54,9 @@ typedef struct AVIIentry { } AVIIentry; #define AVI_INDEX_CLUSTER_SIZE 16384 +#define AVI_MASTER_INDEX_PREFIX_SIZE(8+2+1+1+4+8+4+4) +#define AVI_MASTER_INDEX_ENTRY_SIZE 16 /* bytes per entry */ +#define AVI_MASTER_INDEX_SIZE_DEFAULT 256 /* number of entries */ typedef struct AVIIndex { int64_t indx_start; @@ -66,6 +72,8 @@ typedef struct AVIContext { int64_t riff_start, movi_list, odml_list; int64_t frames_hdr_all; int riff_id; +int reserve_index_space; +int ma
Re: [FFmpeg-devel] [PATCH 1/2 v2] avformat/hlsenc: fix typo of AV_TIME_BASE
2017.01.23. 10:05 keltezéssel, Steven Liu írta: the code use 100 * duration, use AV_TIME_BASE replace 100 Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..f070bc3 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -501,7 +501,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(AV_TIME_BASE * duration)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", I used 100 because the duration is in seconds and the replacement should be in microseconds. The filename will contain the duration in microseconds. So this is a "seconds to microseconds" conversion. It would be a mistake to use AV_TIME_BASE here. Maybe a comment should be added to the code about it. The reasoning behind to put duration in microseconds into filename instead of seconds was to avoid comma in filename. bb ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2 v2] avformat/hlsenc: fix typo of AV_TIME_BASE
2017-01-23 18:43 GMT+08:00 Bodecs Bela : > > > 2017.01.23. 10:05 keltezéssel, Steven Liu írta: > >> the code use 100 * duration, use AV_TIME_BASE replace 100 >> >> Signed-off-by: Steven Liu >> --- >> libavformat/hlsenc.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >> index 85d3955..f070bc3 100644 >> --- a/libavformat/hlsenc.c >> +++ b/libavformat/hlsenc.c >> @@ -501,7 +501,7 @@ static int hls_append_segment(struct AVFormatContext >> *s, HLSContext *hls, double >> return AVERROR(ENOMEM); >> } >> if (replace_int_data_in_filename(hls->avf->filename, >> sizeof(hls->avf->filename), >> -filename, 't', (int64_t)round(100 * duration)) < 1) >> { >> +filename, 't', (int64_t)round(AV_TIME_BASE * duration)) >> < 1) { >> av_log(hls, AV_LOG_ERROR, >> "Invalid second level segment filename template >> '%s', " >> "you can try to remove >> second_level_segment_time flag\n", >> > > I used 100 because the duration is in seconds and the replacement > should be in microseconds. > The filename will contain the duration in microseconds. > So this is a "seconds to microseconds" conversion. It would be a mistake > to use AV_TIME_BASE here. > Maybe a comment should be added to the code about it. > > The reasoning behind to put duration in microseconds into filename instead > of seconds was to avoid comma in filename. resend a new patch! :) > > > bb > > ___ > 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
[FFmpeg-devel] [PATCH] avformat/hlsenc: improve the code readable of 1000000
Reviewed-by: Bodecs Bela Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..0170b34 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -47,6 +47,7 @@ typedef enum { #define KEYSIZE 16 #define LINE_BUFFER_SIZE 1024 +#define HLS_MICROSECOUND_UNIT 100 typedef struct HLSSegment { char filename[1024]; @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(duration * HLS_MICROSECOUND_UNIT)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
Reviewed-by: Bodecs Bela Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..0170b34 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -47,6 +47,7 @@ typedef enum { #define KEYSIZE 16 #define LINE_BUFFER_SIZE 1024 +#define HLS_MICROSECOND_UNIT 100 typedef struct HLSSegment { char filename[1024]; @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(duration * HLS_MICROSECOND_UNIT)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", -- 2.10.1 (Apple Git-78) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] Implemented h264 timing SEI info to ffprobe. Review process?
Thanks! Will do Jordi On Mon, Jan 23, 2017 at 10:36 AM, wm4 wrote: > On Sun, 22 Jan 2017 20:31:36 +0100 > Jordi Cenzano wrote: > > > Hi, I'm and old user of ffmpeg but I'm new in this community. So first of > > all let me congrat you for your work, ffmpeg has been always a great tool > > for me. > > > > I added a new small functionality to ffprobe, now any user can have frame > > SEI timing info available in ffprobe output (useful to read SMPTE time > > code). > > > > Since this is NOT a patch I don't know which is the best way to submit my > > changes for review, for now I created this PR against a FFmpeg forked > repo: > > https://github.com/jordicenzano/FFmpeg/pull/1 > > Send it as patch, either via "git send-email", or as attached text file > produced by "git format-patch". > ___ > 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
[FFmpeg-devel] [PATCH]lavc/svq3: Fail for media key encryption
Hi! Attached patch responds to ticket #6094, pure guessing. Please comment, Carl Eugen From 4d9ca2ef2c455381509a1538676f9aea91de95a2 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 23 Jan 2017 13:39:56 +0100 Subject: [PATCH] lavc/svq3: Fail for media key encryption. Fixes a part of ticket #6094. --- libavcodec/svq3.c |8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index e0747d5..5b99656 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -1070,14 +1070,16 @@ static int svq3_decode_slice_header(AVCodecContext *avctx) av_log(s->avctx, AV_LOG_ERROR, "illegal slice type %u \n", slice_id); return -1; } +if (get_bits1(&s->gb_slice)) { +avpriv_report_missing_feature(s->avctx, "Media key encryption"); +return AVERROR_PATCHWELCOME; +} s->slice_type = ff_h264_golomb_to_pict_type[slice_id]; if ((header & 0x9F) == 2) { -i = (s->mb_num < 64) ? 6 : (1 + av_log2(s->mb_num - 1)); +i = (s->mb_num < 64) ? 5 : av_log2(s->mb_num - 1); get_bits(&s->gb_slice, i); -} else { -skip_bits1(&s->gb_slice); } s->slice_num = get_bits(&s->gb_slice, 8); -- 1.7.10.4 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] Implemented h264 timing SEI info to ffprobe. Review process?
2017-01-22 20:31 GMT+01:00 Jordi Cenzano : > It woud be great some guidance on that. Please split the libavutil change from the h264 change and remove unrelated changes like additional empty lines. I suspect you cannot insert something in the middle of AVFrame, move it to the end. Developers may oppose the libavutil change but you will only find out if you send the patch;-( Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] Contribute to ffmpeg
2017-01-20 8:45 GMT+01:00 Mayank Agarwal : > I want to contribute to ffmpeg.How can i start. Apart from reading the documentation, you may start with fixing a random bug, maybe something simple like a documentation issue. Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
2017.01.23. 12:01 keltezéssel, Steven Liu írta: Reviewed-by: Bodecs Bela Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..0170b34 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -47,6 +47,7 @@ typedef enum { #define KEYSIZE 16 #define LINE_BUFFER_SIZE 1024 +#define HLS_MICROSECOND_UNIT 100 typedef struct HLSSegment { char filename[1024]; @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(duration * HLS_MICROSECOND_UNIT)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", I think it is good. bb ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
On 1/23/2017 8:01 AM, Steven Liu wrote: > Reviewed-by: Bodecs Bela > Signed-off-by: Steven Liu > --- > libavformat/hlsenc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index 85d3955..0170b34 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -47,6 +47,7 @@ typedef enum { > > #define KEYSIZE 16 > #define LINE_BUFFER_SIZE 1024 > +#define HLS_MICROSECOND_UNIT 100 You could instead use AV_TIME_BASE. It's more in line with the rest of the codebase. > > typedef struct HLSSegment { > char filename[1024]; > @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, > HLSContext *hls, double > return AVERROR(ENOMEM); > } > if (replace_int_data_in_filename(hls->avf->filename, > sizeof(hls->avf->filename), > -filename, 't', (int64_t)round(100 * duration)) < 1) { > +filename, 't', (int64_t)round(duration * > HLS_MICROSECOND_UNIT)) < 1) { > av_log(hls, AV_LOG_ERROR, > "Invalid second level segment filename template '%s', > " > "you can try to remove second_level_segment_time > flag\n", > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
2017-01-23 22:14 GMT+08:00 James Almer : > On 1/23/2017 8:01 AM, Steven Liu wrote: > > Reviewed-by: Bodecs Bela > > Signed-off-by: Steven Liu > > --- > > libavformat/hlsenc.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > > index 85d3955..0170b34 100644 > > --- a/libavformat/hlsenc.c > > +++ b/libavformat/hlsenc.c > > @@ -47,6 +47,7 @@ typedef enum { > > > > #define KEYSIZE 16 > > #define LINE_BUFFER_SIZE 1024 > > +#define HLS_MICROSECOND_UNIT 100 > > You could instead use AV_TIME_BASE. It's more in line with the rest of the > codebase. > No, the 1st version, Bodecs Bela has point the 100 is not AV_TIME_BASE mean. > > > > > typedef struct HLSSegment { > > char filename[1024]; > > @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext > *s, HLSContext *hls, double > > return AVERROR(ENOMEM); > > } > > if (replace_int_data_in_filename(hls->avf->filename, > sizeof(hls->avf->filename), > > -filename, 't', (int64_t)round(100 * duration)) < > 1) { > > +filename, 't', (int64_t)round(duration * > HLS_MICROSECOND_UNIT)) < 1) { > > av_log(hls, AV_LOG_ERROR, > > "Invalid second level segment filename template > '%s', " > > "you can try to remove > second_level_segment_time flag\n", > > > > ___ > 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
[FFmpeg-devel] GSoC 2017
Hi all GSoC 2017 mentor org registration has opened a few days ago Our current ideas page lists just a single mentor and single sugestion http://trac.ffmpeg.org/wiki/SponsoringPrograms/GSoC/2017 About the Suggested project It is a hard design task which few students would be capable to do. I dont know if someone already knows a student who is qualified for this and who would be available in FFmpeg GSoC but if not I think finding a qualified student will be hard or require some luck and success with a less than qualified student unlikely. At least thats what my gut feeling says based on past years About the number of ideas one is not enough, and i think its a waste of time if we apply with such short list, i doubt we would be accepted with one idea and one mentor About the number of mentors one is not enough we should have at least twice as many voluneer mentors as we want to have accepted projects as each project needs mentor and backup mentor. In some of the past years I asked people one by one to find volunteers, thats surprissingly alot of work so we need a more efficient way. Can we make a list of potential Mentors on the wiki ? We will likely need to specify the number of potential mentors when registering FFmpeg to GSoC 2017, we did had to in previous years. I also suspect the number of slots we get is bound to a fraction of this number so it is important that this number is correct and not smaller from people being lazy and waiting till we know what students and actual project proposals are available to us IIRC google suggests that ideas pages are writen and maintained year round. Now we have a list but some develoeprs seem to oppose some of these old ideas, I would expect that for each objection against an old idea a new has to be provided and the one objecting should volunteer as mentor for it. Otherwise we might be short on ideas and mentors -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB In fact, the RIAA has been known to suggest that students drop out of college or go to community college in order to be able to afford settlements. -- The RIAA signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
On 1/23/2017 11:25 AM, Steven Liu wrote: > 2017-01-23 22:14 GMT+08:00 James Almer : > >> On 1/23/2017 8:01 AM, Steven Liu wrote: >>> Reviewed-by: Bodecs Bela >>> Signed-off-by: Steven Liu >>> --- >>> libavformat/hlsenc.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >>> index 85d3955..0170b34 100644 >>> --- a/libavformat/hlsenc.c >>> +++ b/libavformat/hlsenc.c >>> @@ -47,6 +47,7 @@ typedef enum { >>> >>> #define KEYSIZE 16 >>> #define LINE_BUFFER_SIZE 1024 >>> +#define HLS_MICROSECOND_UNIT 100 >> >> You could instead use AV_TIME_BASE. It's more in line with the rest of the >> codebase. >> > No, the 1st version, Bodecs Bela has point the 100 is not AV_TIME_BASE > mean. I'm not sure i understand his reasoning, seeing that AV_TIME_BASE is defined as 100 in avutil.h and i don't see it changing anytime soon, but it's just a nit so not really important. This patch is good as is. > >> >>> >>> typedef struct HLSSegment { >>> char filename[1024]; >>> @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext >> *s, HLSContext *hls, double >>> return AVERROR(ENOMEM); >>> } >>> if (replace_int_data_in_filename(hls->avf->filename, >> sizeof(hls->avf->filename), >>> -filename, 't', (int64_t)round(100 * duration)) < >> 1) { >>> +filename, 't', (int64_t)round(duration * >> HLS_MICROSECOND_UNIT)) < 1) { >>> av_log(hls, AV_LOG_ERROR, >>> "Invalid second level segment filename template >> '%s', " >>> "you can try to remove >> second_level_segment_time flag\n", >>> >> >> ___ >> 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 > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] GSoC 2017
Hi, On Mon, Jan 23, 2017 at 9:39 AM, Michael Niedermayer wrote: > IIRC google suggests that ideas pages are writen and maintained > year round. Now we have a list but some develoeprs seem to oppose some > of these old ideas, I would expect that for each objection against an > old idea a new has to be provided and the one objecting should > volunteer as mentor for it. Otherwise we might be short on ideas and > mentors I don't think this is a good idea. But I'm open to being a mentor this year. I'll come up with a good idea. Ronald ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
2017.01.23. 15:55 keltezéssel, James Almer írta: On 1/23/2017 11:25 AM, Steven Liu wrote: 2017-01-23 22:14 GMT+08:00 James Almer : On 1/23/2017 8:01 AM, Steven Liu wrote: Reviewed-by: Bodecs Bela Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 85d3955..0170b34 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -47,6 +47,7 @@ typedef enum { #define KEYSIZE 16 #define LINE_BUFFER_SIZE 1024 +#define HLS_MICROSECOND_UNIT 100 You could instead use AV_TIME_BASE. It's more in line with the rest of the codebase. No, the 1st version, Bodecs Bela has point the 100 is not AV_TIME_BASE mean. I'm not sure i understand his reasoning, seeing that AV_TIME_BASE is defined as 100 in avutil.h and i don't see it changing anytime soon, but it's just a nit so not really important. This patch is good as is. I used 100 because the duration is in seconds and the replacement should be in microseconds. The filename will contain the duration in microseconds. So this is a "seconds to microseconds" conversion. It would be a mistake to use AV_TIME_BASE here, because i think it is a coincindence that the 2 numbers is the same. We want ot use microseconds in filenames not AV_TIME_BASE units. Maybe a comment should be added to the code about it. The reasoning behind to put duration in microseconds into filename instead of seconds was to avoid comma in filename. typedef struct HLSSegment { char filename[1024]; @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double return AVERROR(ENOMEM); } if (replace_int_data_in_filename(hls->avf->filename, sizeof(hls->avf->filename), -filename, 't', (int64_t)round(100 * duration)) < 1) { +filename, 't', (int64_t)round(duration * HLS_MICROSECOND_UNIT)) < 1) { av_log(hls, AV_LOG_ERROR, "Invalid second level segment filename template '%s', " "you can try to remove second_level_segment_time flag\n", ___ 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 ___ 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
Re: [FFmpeg-devel] Implemented h264 timing SEI info to ffprobe. Review process?
On Mon, 23 Jan 2017 14:43:36 +0100 Carl Eugen Hoyos wrote: > 2017-01-22 20:31 GMT+01:00 Jordi Cenzano : > > > It woud be great some guidance on that. > > Please split the libavutil change from the h264 change and remove > unrelated changes like additional empty lines. > I suspect you cannot insert something in the middle of AVFrame, > move it to the end. > > Developers may oppose the libavutil change but you will only find > out if you send the patch;-( It's quite likely that least some adjustments will be requested, but all to its time. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avfilter: add EIA-608 line extractor
On 1/17/17, Paul B Mahol wrote: > Signed-off-by: Dave Rice > Signed-off-by: Paul B Mahol > --- > doc/filters.texi| 70 > libavfilter/Makefile| 1 + > libavfilter/allfilters.c| 1 + > libavfilter/vf_readeia608.c | 268 > > 4 files changed, 340 insertions(+) > create mode 100644 libavfilter/vf_readeia608.c > Gonna push this soon. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
On Mon, 23 Jan 2017 19:01:14 +0800 Steven Liu wrote: > Reviewed-by: Bodecs Bela > Signed-off-by: Steven Liu > --- > libavformat/hlsenc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index 85d3955..0170b34 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -47,6 +47,7 @@ typedef enum { > > #define KEYSIZE 16 > #define LINE_BUFFER_SIZE 1024 > +#define HLS_MICROSECOND_UNIT 100 > > typedef struct HLSSegment { > char filename[1024]; > @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext *s, > HLSContext *hls, double > return AVERROR(ENOMEM); > } > if (replace_int_data_in_filename(hls->avf->filename, > sizeof(hls->avf->filename), > -filename, 't', (int64_t)round(100 * duration)) < 1) { > +filename, 't', (int64_t)round(duration * > HLS_MICROSECOND_UNIT)) < 1) { > av_log(hls, AV_LOG_ERROR, > "Invalid second level segment filename template '%s', > " > "you can try to remove second_level_segment_time > flag\n", The commit message could be improved. It's barely English. (I'm not a native speaker either, so I have no suggestion.) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
On Mon, 16 Jan 2017 10:01:41 -0800 Philip Langdale wrote: > On Mon, 16 Jan 2017 18:56:09 +0100 > wm4 wrote: > > > On Mon, 16 Jan 2017 09:31:42 -0800 > > Philip Langdale wrote: > > > > > On Mon, 16 Jan 2017 16:44:16 +0100 > > > wm4 wrote: > > > > > > > Copied and modified from hwcontext_qsv.c. > > > > --- > > > > libavutil/hwcontext_cuda.c | 26 ++ > > > > 1 file changed, 26 insertions(+) > > > > > > > > diff --git a/libavutil/hwcontext_cuda.c > > > > b/libavutil/hwcontext_cuda.c index 5dd0d99272..ed595c3e0f 100644 > > > > --- a/libavutil/hwcontext_cuda.c > > > > +++ b/libavutil/hwcontext_cuda.c > > > > @@ -39,6 +39,31 @@ static const enum AVPixelFormat > > > > supported_formats[] = { AV_PIX_FMT_P016, > > > > }; > > > > > > > > +static int cuda_frames_get_constraints(AVHWDeviceContext *ctx, > > > > + const void *hwconfig, > > > > + AVHWFramesConstraints > > > > *constraints) +{ > > > > +int i; > > > > + > > > > +constraints->valid_sw_formats = > > > > av_malloc_array(FF_ARRAY_ELEMS(supported_formats) + 1, > > > > + > > > > sizeof(*constraints->valid_sw_formats)); > > > > +if (!constraints->valid_sw_formats) > > > > +return AVERROR(ENOMEM); > > > > + > > > > +for (i = 0; i < FF_ARRAY_ELEMS(supported_formats); i++) > > > > +constraints->valid_sw_formats[i] = supported_formats[i]; > > > > + > > > > constraints->valid_sw_formats[FF_ARRAY_ELEMS(supported_formats)] > > > > = AV_PIX_FMT_NONE; + > > > > +constraints->valid_hw_formats = av_malloc_array(2, > > > > sizeof(*constraints->valid_hw_formats)); > > > > +if (!constraints->valid_hw_formats) > > > > +return AVERROR(ENOMEM); > > > > > > Is it weird if this fails and valid_sw_formats succeeds? I guess > > > that's up to how the caller handles the error. > > > > It is, but the QSV code also did it this way. > > > > And if we're completely honest, nobody really cares about tiny leaks > > when tiny allocations fail (which in practice never ever happens > > anyway). > > Yeah. The world is going to end if it ever happens. > > Ship it. Pushed, got tired of waiting for a response on the Libav ML. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] lavc/cuvid: fail early if GPU can't handle video resolution (v5)
applied ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] libavformat/tee: tee was passing a wrong option name for fifo's format_options
From: Felipe Astroza If fifo is enabled on tee muxer, ffmpeg exits because of an unknown option passed to fifo muxer. Option name "format_options" was replaced by "format_opts" on tee muxer. Signed-off-by: Felipe Astroza --- libavformat/tee.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/tee.c b/libavformat/tee.c index 99259a7..dd1844a 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -208,7 +208,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave) if (ret < 0) goto end; -ret = av_dict_set(&tee_slave->fifo_options, "format_options", format_options_str, +ret = av_dict_set(&tee_slave->fifo_options, "format_opts", format_options_str, AV_DICT_DONT_STRDUP_VAL); if (ret < 0) goto end; -- 2.7.4 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] GSoC 2017
On Mon, 23 Jan 2017 15:39:09 +0100, Michael Niedermayer wrote: > IIRC google suggests that ideas pages are writen and maintained > year round. I made a "master list" on the wiki several years ago. The intent was to have a single, maintained repository for ideas that we could pick and choose from instead of looking at a dozen pages scavenging unused ideas from past years. Also, I assumed it would be easier to dump ideas to it when they came since it wouldn't be associated with any (past) year. However, it was ignored or forgotten and I deleted it after a few years of non-use. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] avcodec/h264dec: Fix regression with "make fate-h264-attachment-631 THREADS=8"
Found-by: ubitux Signed-off-by: Michael Niedermayer --- libavcodec/h264_picture.c | 2 +- libavcodec/h264dec.c | 4 +++- libavcodec/h264dec.h | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index f634d2a1a7..2313eff5d7 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -185,7 +185,7 @@ int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup) ff_vdpau_h264_picture_complete(h); #endif -if (!in_setup && !h->droppable) +if (!in_setup && !h->droppable && h->has_slice) ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, h->picture_structure == PICT_BOTTOM_FIELD); emms_c(); diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 4ecaec267c..6f2bd79628 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -607,6 +607,7 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) int idr_cleared=0; int i, ret = 0; +h->has_slice = 0; h->nal_unit_type= 0; h->max_contexts = h->nb_slice_ctx; @@ -672,6 +673,7 @@ again: h->has_recovery_point = 1; case H264_NAL_SLICE: sl->gb = nal->gb; +h->has_slice = 1; if ((err = ff_h264_decode_slice_header(h, sl, nal))) break; @@ -839,7 +841,7 @@ end: } #endif /* CONFIG_ERROR_RESILIENCE */ /* clean up */ -if (h->cur_pic_ptr && !h->droppable) { +if (h->cur_pic_ptr && !h->droppable && h->has_slice) { ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, h->picture_structure == PICT_BOTTOM_FIELD); } diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h index c8b7e663b3..52e2e55b2a 100644 --- a/libavcodec/h264dec.h +++ b/libavcodec/h264dec.h @@ -541,6 +541,8 @@ typedef struct H264Context { int has_recovery_point; +int has_slice; + int missing_fields; /* for frame threading, this is set to 1 -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avfilter: add EIA-608 line extractor
On Mon, 23 Jan 2017, Paul B Mahol wrote: On 1/17/17, Paul B Mahol wrote: Signed-off-by: Dave Rice Signed-off-by: Paul B Mahol --- doc/filters.texi| 70 libavfilter/Makefile| 1 + libavfilter/allfilters.c| 1 + libavfilter/vf_readeia608.c | 268 4 files changed, 340 insertions(+) create mode 100644 libavfilter/vf_readeia608.c Gonna push this soon. You may consider using the bit slicer only from libzvbi, I have used it for teletext in libavdevice/decklink_dec.cpp, in the teletext_data_unit_from_vbi_data function. I have copied the initialization variables from the zvbi source raw_decoder.c, maybe you can do the same with CC. Regards, Marton ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] avcodec/h264dec: Fix regression with "make fate-h264-attachment-631 THREADS=8"
This treats the case of no slices like no frames which it basically is. The field is added to the context as other nal related fields are also there and passing the has_slices field per *arguments is ugly and not consistent Found-by: ubitux Signed-off-by: Michael Niedermayer --- libavcodec/h264dec.c | 6 -- libavcodec/h264dec.h | 2 ++ tests/fate/h264.mak | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 4ecaec267c..41e6ce458c 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -607,6 +607,7 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) int idr_cleared=0; int i, ret = 0; +h->has_slice = 0; h->nal_unit_type= 0; h->max_contexts = h->nb_slice_ctx; @@ -672,6 +673,7 @@ again: h->has_recovery_point = 1; case H264_NAL_SLICE: sl->gb = nal->gb; +h->has_slice = 1; if ((err = ff_h264_decode_slice_header(h, sl, nal))) break; @@ -839,7 +841,7 @@ end: } #endif /* CONFIG_ERROR_RESILIENCE */ /* clean up */ -if (h->cur_pic_ptr && !h->droppable) { +if (h->cur_pic_ptr && !h->droppable && h->has_slice) { ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, h->picture_structure == PICT_BOTTOM_FIELD); } @@ -1055,7 +1057,7 @@ static int h264_decode_frame(AVCodecContext *avctx, void *data, return send_next_delayed_frame(h, pict, got_frame, buf_index); } -if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) && !h->cur_pic_ptr) { +if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) && (!h->cur_pic_ptr || !h->has_slice)) { if (avctx->skip_frame >= AVDISCARD_NONREF || buf_size >= 4 && !memcmp("Q264", buf, 4)) return buf_size; diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h index c8b7e663b3..fa5c98ee90 100644 --- a/libavcodec/h264dec.h +++ b/libavcodec/h264dec.h @@ -446,6 +446,8 @@ typedef struct H264Context { int nal_ref_idc; int nal_unit_type; +int has_slice; ///< slice NAL is found in the packet, set by decode_nal_units, its state does not need to be preserved outside h264_decode_frame() + /** * Used to parse AVC variant of H.264 */ diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index d40681f9c9..1f6e5f3947 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -424,7 +424,7 @@ fate-h264-extreme-plane-pred: CMD = framemd5 -i $(TARGET_SAM fate-h264-interlace-crop: CMD = framecrc -i $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 -vframes 3 fate-h264-brokensps-2580: CMD = framecrc -i $(TARGET_SAMPLES)/h264/brokensps.flv -vf format=yuv420p,scale=w=192:h=144 -sws_flags bitexact+bilinear fate-h264-xavc-4389: CMD = framecrc -i $(TARGET_SAMPLES)/h264/SonyXAVC_LongGOP_green_pixelation_early_Frames.MXF -pix_fmt yuv422p10le -fate-h264-attachment-631: CMD = framecrc -i $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.95 +fate-h264-attachment-631: CMD = framecrc -i $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.96 fate-h264-skip-nokey: CMD = framecrc -skip_frame nokey -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-skip-nointra: CMD = framecrc -skip_frame nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-intra-refresh-recovery: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 -frames:v 10 -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] FFmpeg 3.3
On Mon, Jan 23, 2017 at 07:07:55AM +0100, Reto Kromer wrote: > Michael Niedermayer wrote: > > >Its a while since the last relase so ill make 3.3 within > >the next week(s) > > Thank you, Michael! > > >I also intend to make some new point releases from the > >currently maintained branches if someone wants to backport > >something > > I suggest to switch "Nash" 2.7.7 to the old releases (the > last update has been made on 2016-04-30). good idea, done that thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB No great genius has ever existed without some touch of madness. -- Aristotle signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] libavformat/tee: tee was passing a wrong option name for fifo's format_options
On Mon, Jan 23, 2017 at 02:55:31PM -0300, Felipe Astroza Araya wrote: > From: Felipe Astroza > > If fifo is enabled on tee muxer, ffmpeg exits because of an unknown option > passed to fifo muxer. > Option name "format_options" was replaced by "format_opts" on tee muxer. > > Signed-off-by: Felipe Astroza > --- > libavformat/tee.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB I know you won't believe me, but the highest form of Human Excellence is to question oneself and others. -- Socrates signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] ffmpeg_opt.c: Introduce a -vstats_version option and document the existing -vstats format.
Signed-off-by: Sasi Inguva --- doc/ffmpeg.texi | 4 ffmpeg.c| 1 + ffmpeg.h| 1 + ffmpeg_opt.c| 3 +++ 4 files changed, 9 insertions(+) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index b56bdbe261..cdea1a271f 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -636,6 +636,10 @@ Calculate PSNR of compressed frames. Dump video coding statistics to @file{vstats_HHMMSS.log}. @item -vstats_file @var{file} Dump video coding statistics to @var{file}. +@item -vstats_version @var{file} +Specifies which version of the vstats format to use. If version is 1, format is + +@code{frame= %5d q= %2.1f PSNR= %6.2f f_size= %6d s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s} @item -top[:@var{stream_specifier}] @var{n} (@emph{output,per-stream}) top=1/bottom=0/auto=-1 field first @item -dc @var{precision} diff --git a/ffmpeg.c b/ffmpeg.c index 977708c069..d42adf86ee 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -1347,6 +1347,7 @@ static void do_video_stats(OutputStream *ost, int frame_size) enc = ost->enc_ctx; if (enc->codec_type == AVMEDIA_TYPE_VIDEO) { frame_number = ost->st->nb_frames; + fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number, ost->quality / (float)FF_QP2LAMBDA); diff --git a/ffmpeg.h b/ffmpeg.h index 75bf50ec29..458bb8a3dc 100644 --- a/ffmpeg.h +++ b/ffmpeg.h @@ -597,6 +597,7 @@ extern char *videotoolbox_pixfmt; extern int filter_nbthreads; extern int filter_complex_nbthreads; +extern int vstats_version; extern const AVIOInterruptCB int_cb; diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index a1c02fc29b..b1a62e8620 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -121,6 +121,7 @@ int frame_bits_per_raw_sample = 0; float max_error_rate = 2.0/3; int filter_nbthreads = 0; int filter_complex_nbthreads = 0; +int vstats_version = 1; static int intra_only = 0; @@ -3547,6 +3548,8 @@ const OptionDef options[] = { "dump video coding statistics to file" }, { "vstats_file", OPT_VIDEO | HAS_ARG | OPT_EXPERT , { .func_arg = opt_vstats_file }, "dump video coding statistics to file", "file" }, +{ "vstats_version", OPT_VIDEO | OPT_INT | HAS_ARG | OPT_EXPERT , { &vstats_version }, +"Version of the vstats format to use."}, { "vf", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_video_filters }, "set video filters", "filter_graph" }, { "intra_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC | -- 2.11.0.483.g087da7b7c-goog ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] ffmpeg.c: Add output file index and stream index to vstats file.
Thanks. I have sent a patch introducing -vstats_version option. PTAL. On Sat, Jan 21, 2017 at 3:52 AM, Michael Niedermayer wrote: > On Fri, Jan 20, 2017 at 07:31:09PM -0800, Sasi Inguva wrote: > > Couldn't find any version that relates to vstats. There is nothing that > > says format may change any time , but there is no defined format either. > > Let me know the version enum I have to update if I need to. > > i dont think theres a enum > I think the way to resolve this is to send a patch that updates the > docs and either state that vstats format can change at any time or > that it cannot in which case something like a -vtstats_version > parameter would need to be added > > When the docs patch passes review, that is everyone is happy with the > solution it describes then the change with or without a version > check which either way then matches the docs can be pushed > > thx > > [...] > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Dictatorship: All citizens are under surveillance, all their steps and > actions recorded, for the politicians to enforce control. > Democracy: All politicians are under surveillance, all their steps and > actions recorded, for the citizens to enforce control. > > ___ > 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
Re: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: improve the code readable of 1000000
2017-01-23 23:18 GMT+08:00 wm4 : > On Mon, 23 Jan 2017 19:01:14 +0800 > Steven Liu wrote: > > > Reviewed-by: Bodecs Bela > > Signed-off-by: Steven Liu > > --- > > libavformat/hlsenc.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > > index 85d3955..0170b34 100644 > > --- a/libavformat/hlsenc.c > > +++ b/libavformat/hlsenc.c > > @@ -47,6 +47,7 @@ typedef enum { > > > > #define KEYSIZE 16 > > #define LINE_BUFFER_SIZE 1024 > > +#define HLS_MICROSECOND_UNIT 100 > > > > typedef struct HLSSegment { > > char filename[1024]; > > @@ -501,7 +502,7 @@ static int hls_append_segment(struct AVFormatContext > *s, HLSContext *hls, double > > return AVERROR(ENOMEM); > > } > > if (replace_int_data_in_filename(hls->avf->filename, > sizeof(hls->avf->filename), > > -filename, 't', (int64_t)round(100 * duration)) < > 1) { > > +filename, 't', (int64_t)round(duration * > HLS_MICROSECOND_UNIT)) < 1) { > > av_log(hls, AV_LOG_ERROR, > > "Invalid second level segment filename template > '%s', " > > "you can try to remove > second_level_segment_time flag\n", > > The commit message could be improved. It's barely English. (I'm not a > native speaker either, so I have no suggestion.) > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > pushed ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/2] avformat/flvenc: refine the flvenc shift_data code
2017-01-23 17:05 GMT+08:00 Steven Liu : > refine the flvenc shift_data move data option > > Signed-off-by: Steven Liu > --- > libavformat/flvenc.c | 12 +++- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c > index 5714321..d7506c5 100644 > --- a/libavformat/flvenc.c > +++ b/libavformat/flvenc.c > @@ -626,13 +626,15 @@ static int shift_data(AVFormatContext *s) > avio_seek(read_pb, flv->keyframes_info_offset, SEEK_SET); > pos = avio_tell(read_pb); > > -/* shift data by chunk of at most keyframe *filepositions* and > *times* size */ > +#define READ_BLOCK do { >\ > read_size[read_buf_id] = avio_read(read_pb, read_buf[read_buf_id], > metadata_size); \ > -read_buf_id ^= 1; > -do { > +read_buf_id ^= 1; >\ > +} while (0) > > -read_size[read_buf_id] = avio_read(read_pb, > read_buf[read_buf_id], metadata_size); \ > -read_buf_id ^= 1; > +/* shift data by chunk of at most keyframe *filepositions* and > *times* size */ > +READ_BLOCK; > +do { > +READ_BLOCK; > n = read_size[read_buf_id]; > if (n < 0) > break; > -- > 2.10.1 (Apple Git-78) > > > > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel pushed ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avcodec/h264dec: Fix regression with "make fate-h264-attachment-631 THREADS=8"
On Tue, 24 Jan 2017 00:38:15 +0100 Michael Niedermayer wrote: > This treats the case of no slices like no frames which it basically is. > > The field is added to the context as other nal related fields are also there > and passing the has_slices field per *arguments is ugly and not consistent > > Found-by: ubitux > Signed-off-by: Michael Niedermayer > --- > libavcodec/h264dec.c | 6 -- > libavcodec/h264dec.h | 2 ++ > tests/fate/h264.mak | 2 +- > 3 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c > index 4ecaec267c..41e6ce458c 100644 > --- a/libavcodec/h264dec.c > +++ b/libavcodec/h264dec.c > @@ -607,6 +607,7 @@ static int decode_nal_units(H264Context *h, const uint8_t > *buf, int buf_size) > int idr_cleared=0; > int i, ret = 0; > > +h->has_slice = 0; > h->nal_unit_type= 0; > > h->max_contexts = h->nb_slice_ctx; > @@ -672,6 +673,7 @@ again: > h->has_recovery_point = 1; > case H264_NAL_SLICE: > sl->gb = nal->gb; > +h->has_slice = 1; > > if ((err = ff_h264_decode_slice_header(h, sl, nal))) > break; > @@ -839,7 +841,7 @@ end: > } > #endif /* CONFIG_ERROR_RESILIENCE */ > /* clean up */ > -if (h->cur_pic_ptr && !h->droppable) { > +if (h->cur_pic_ptr && !h->droppable && h->has_slice) { > ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, >h->picture_structure == PICT_BOTTOM_FIELD); > } > @@ -1055,7 +1057,7 @@ static int h264_decode_frame(AVCodecContext *avctx, > void *data, > return send_next_delayed_frame(h, pict, got_frame, buf_index); > } > > -if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) && !h->cur_pic_ptr) { > +if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) && (!h->cur_pic_ptr || > !h->has_slice)) { > if (avctx->skip_frame >= AVDISCARD_NONREF || > buf_size >= 4 && !memcmp("Q264", buf, 4)) > return buf_size; > diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h > index c8b7e663b3..fa5c98ee90 100644 > --- a/libavcodec/h264dec.h > +++ b/libavcodec/h264dec.h > @@ -446,6 +446,8 @@ typedef struct H264Context { > int nal_ref_idc; > int nal_unit_type; > > +int has_slice; ///< slice NAL is found in the packet, set by > decode_nal_units, its state does not need to be preserved outside > h264_decode_frame() > + > /** > * Used to parse AVC variant of H.264 > */ > diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak > index d40681f9c9..1f6e5f3947 100644 > --- a/tests/fate/h264.mak > +++ b/tests/fate/h264.mak > @@ -424,7 +424,7 @@ fate-h264-extreme-plane-pred: CMD = > framemd5 -i $(TARGET_SAM > fate-h264-interlace-crop: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 -vframes 3 > fate-h264-brokensps-2580: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/brokensps.flv -vf format=yuv420p,scale=w=192:h=144 > -sws_flags bitexact+bilinear > fate-h264-xavc-4389: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/SonyXAVC_LongGOP_green_pixelation_early_Frames.MXF > -pix_fmt yuv422p10le > -fate-h264-attachment-631: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.95 > +fate-h264-attachment-631: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.96 Any reason for this part of the change? It looks to me like the patch is only fixing some regressed logic. > fate-h264-skip-nokey: CMD = framecrc -skip_frame > nokey -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts > fate-h264-skip-nointra: CMD = framecrc -skip_frame > nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts > fate-h264-intra-refresh-recovery: CMD = framecrc -i > $(TARGET_SAMPLES)/h264/intra_refresh.h264 -frames:v 10 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel