Re: [FFmpeg-devel] [PATCH] avfilter/af_atempo: Make independent of the channel layout

2016-09-05 Thread Pavel Koshevoy
On Sep 5, 2016 4:41 PM, "Michael Niedermayer" 
wrote:
>
> Signed-off-by: Michael Niedermayer 
> ---
>  libavfilter/af_atempo.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
> index 7b3d57c..d5d29b3 100644
> --- a/libavfilter/af_atempo.c
> +++ b/libavfilter/af_atempo.c
> @@ -1044,9 +1044,8 @@ static int config_props(AVFilterLink *inlink)
>
>  enum AVSampleFormat format = inlink->format;
>  int sample_rate = (int)inlink->sample_rate;
> -int channels = av_get_channel_layout_nb_channels(inlink->channel_
layout);
>
> -return yae_reset(atempo, format, sample_rate, channels);
> +return yae_reset(atempo, format, sample_rate, inlink->channels);
>  }
>
>  static int push_samples(ATempoContext *atempo,
> --
> 2.9.3


Looks good to me,

Pavel.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/audiotoolboxdec: fix OSX SDK detection

2016-09-05 Thread Rodger Combs

> On Sep 5, 2016, at 22:58, Dmitry Kalinkin  wrote:
> 
> __MAC_10_11 can be present in updated revision of an older SDK so it
> can't reliably detect availability of kAudioFormatEnhancedAC3 constant.
> 
> Fixes: b4daa2c40f ('lavc/audiotoolboxdec: add eac3 decoder')
> Cc: Rodger Combs 
> Signed-off-by: Dmitry Kalinkin 
> ---
> libavcodec/audiotoolboxdec.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c
> index 1097668..bba6913 100644
> --- a/libavcodec/audiotoolboxdec.c
> +++ b/libavcodec/audiotoolboxdec.c
> @@ -32,7 +32,7 @@
> #include "libavutil/opt.h"
> #include "libavutil/log.h"
> 
> -#ifndef __MAC_10_11
> +#ifndef __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
> #define kAudioFormatEnhancedAC3 'ec-3'
> #endif
> 
> -- 
> 2.7.4 (Apple Git-66)
> 

We shouldn't use the MIN_REQUIRED macro here, since the runtime availability 
isn't affected by the minimum version we're building against.
There might be a better macro available for this, but since the original 
definition is in an enum, our best bet might just be to make this #define 
unconditional.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/audiotoolboxdec: fix OSX SDK detection

2016-09-05 Thread Rodger Combs

> On Sep 5, 2016, at 23:08, Dmitry Kalinkin  wrote:
> 
> 
>> On 06 Sep 2016, at 00:05, Rodger Combs  wrote:
>> 
>> 
>>> On Sep 5, 2016, at 22:58, Dmitry Kalinkin  wrote:
>>> 
>>> __MAC_10_11 can be present in updated revision of an older SDK so it
>>> can't reliably detect availability of kAudioFormatEnhancedAC3 constant.
>>> 
>>> Fixes: b4daa2c40f ('lavc/audiotoolboxdec: add eac3 decoder')
>>> Cc: Rodger Combs 
>>> Signed-off-by: Dmitry Kalinkin 
>>> ---
>>> libavcodec/audiotoolboxdec.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>> 
>>> diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c
>>> index 1097668..bba6913 100644
>>> --- a/libavcodec/audiotoolboxdec.c
>>> +++ b/libavcodec/audiotoolboxdec.c
>>> @@ -32,7 +32,7 @@
>>> #include "libavutil/opt.h"
>>> #include "libavutil/log.h"
>>> 
>>> -#ifndef __MAC_10_11
>>> +#ifndef __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
>>> #define kAudioFormatEnhancedAC3 'ec-3'
>>> #endif
>>> 
>>> -- 
>>> 2.7.4 (Apple Git-66)
>>> 
>> 
>> We shouldn't use the MIN_REQUIRED macro here, since the runtime availability 
>> isn't affected by the minimum version we're building against.
>> There might be a better macro available for this, but since the original 
>> definition is in an enum, our best bet might just be to make this #define 
>> unconditional.
> 
> My understanding was that MIN_REQUIRED is defined by -mmacosx-version-min and 
> SDK is chosen accordingly. Also if it’s a macro it can’t depend on runtime.
> 

Oh, sorry, I was thinking of a different version of this check that I'd 
replaced. Yeah, I guess all this might do is redefine it if you're on a new SDK 
with an older mmacosx-version-min (which is fine since it's not a macro to 
begin with), so this LGTM.

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/3] lavf/matroskaenc: skip writing "duration" tags

2016-09-05 Thread Rodger Combs
---
 libavformat/matroskaenc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index decb66d..7deccaa 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1314,6 +1314,7 @@ static int mkv_check_tag_name(const char *name, unsigned 
int elementid)
av_strcasecmp(name, "stereo_mode") &&
av_strcasecmp(name, "creation_time") &&
av_strcasecmp(name, "encoding_tool") &&
+   av_strcasecmp(name, "duration") &&
(elementid != MATROSKA_ID_TAGTARGETS_TRACKUID ||
 av_strcasecmp(name, "language"));
 }
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/3] lavf/matroskaenc: move skipped metadata keys to separate function

2016-09-05 Thread Rodger Combs
---
 libavformat/matroskaenc.c | 17 +++--
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 2a2877f..decb66d 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1308,6 +1308,16 @@ static int mkv_write_tag_targets(AVFormatContext *s,
 return 0;
 }
 
+static int mkv_check_tag_name(const char *name, unsigned int elementid)
+{
+return av_strcasecmp(name, "title") &&
+   av_strcasecmp(name, "stereo_mode") &&
+   av_strcasecmp(name, "creation_time") &&
+   av_strcasecmp(name, "encoding_tool") &&
+   (elementid != MATROSKA_ID_TAGTARGETS_TRACKUID ||
+av_strcasecmp(name, "language"));
+}
+
 static int mkv_write_tag(AVFormatContext *s, AVDictionary *m, unsigned int 
elementid,
  unsigned int uid, ebml_master *tags)
 {
@@ -1320,12 +1330,7 @@ static int mkv_write_tag(AVFormatContext *s, 
AVDictionary *m, unsigned int eleme
 return ret;
 
 while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) {
-if (av_strcasecmp(t->key, "title") &&
-av_strcasecmp(t->key, "stereo_mode") &&
-av_strcasecmp(t->key, "creation_time") &&
-av_strcasecmp(t->key, "encoding_tool") &&
-(elementid != MATROSKA_ID_TAGTARGETS_TRACKUID ||
- av_strcasecmp(t->key, "language"))) {
+if (mkv_check_tag_name(t->key, elementid)) {
 ret = mkv_write_simpletag(s->pb, t);
 if (ret < 0)
 return ret;
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 3/3] lavf/matroskaenc: use mkv_check_tag_name consistently; update test

2016-09-05 Thread Rodger Combs
---
 libavformat/matroskaenc.c | 10 +-
 tests/fate/matroska.mak   |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 7deccaa..3eeb09b 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1342,12 +1342,12 @@ static int mkv_write_tag(AVFormatContext *s, 
AVDictionary *m, unsigned int eleme
 return 0;
 }
 
-static int mkv_check_tag(AVDictionary *m)
+static int mkv_check_tag(AVDictionary *m, unsigned int elementid)
 {
 AVDictionaryEntry *t = NULL;
 
 while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX)))
-if (av_strcasecmp(t->key, "title") && av_strcasecmp(t->key, 
"stereo_mode"))
+if (mkv_check_tag_name(t->key, elementid))
 return 1;
 
 return 0;
@@ -1361,7 +1361,7 @@ static int mkv_write_tags(AVFormatContext *s)
 
 ff_metadata_conv_ctx(s, ff_mkv_metadata_conv, NULL);
 
-if (mkv_check_tag(s->metadata)) {
+if (mkv_check_tag(s->metadata, 0)) {
 ret = mkv_write_tag(s, s->metadata, 0, 0, &tags);
 if (ret < 0) return ret;
 }
@@ -1369,7 +1369,7 @@ static int mkv_write_tags(AVFormatContext *s)
 for (i = 0; i < s->nb_streams; i++) {
 AVStream *st = s->streams[i];
 
-if (!mkv_check_tag(st->metadata))
+if (!mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID))
 continue;
 
 ret = mkv_write_tag(s, st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID, 
i + 1, &tags);
@@ -1398,7 +1398,7 @@ static int mkv_write_tags(AVFormatContext *s)
 for (i = 0; i < s->nb_chapters; i++) {
 AVChapter *ch = s->chapters[i];
 
-if (!mkv_check_tag(ch->metadata))
+if (!mkv_check_tag(ch->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID))
 continue;
 
 ret = mkv_write_tag(s, ch->metadata, 
MATROSKA_ID_TAGTARGETS_CHAPTERUID, ch->id + mkv->chapter_id_offset, &tags);
diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak
index 8cf1734..8e4a1e8 100644
--- a/tests/fate/matroska.mak
+++ b/tests/fate/matroska.mak
@@ -4,6 +4,6 @@
 FATE_MATROSKA-$(call DEMMUX, MATROSKA, MATROSKA) += fate-matroska-remux
 fate-matroska-remux: CMD = md5 -i 
$(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-2pass-akiyo.webm -color_trc 4 -c:v 
copy -fflags +bitexact -strict -2 -f matroska
 fate-matroska-remux: CMP = oneline
-fate-matroska-remux: REF = 5ebcfaa8e3d534f8a800a58fd2b0aca6
+fate-matroska-remux: REF = f08b20b90f158a4de5a02a52c25596b9
 
 FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes)
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 10:04:35PM -0300, James Almer wrote:
> On 9/5/2016 12:41 PM, Michael Niedermayer wrote:
> > On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
> >> From: Clément Bœsch 
> >>
> >> These adjusted codec fields do not seem to be in use anymore and prevent
> >> the convert of ffmpeg*.c to codecpar.
> > 
> >  ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
> > fails, no output anymore
> > 
> > ./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
> > the output now has 600fps
> 
> Even with this code in place the resulting stream in the avi is reported
> as 100 fps.

that seems to be a regression since
6f69f7a8bf6a0d013985578df2ef42ee6b1c7994

IIRC the intended timebase is 1/50 for this kind of content
(allowing the support of interlaced and field duplicated content to
 appear later)


> And with or without the code, the resulting files play the
> same with the players i tried.

Higher framerates / finer timebases need noticably more space to
be stored in avi, thats not the case for other formats and thats
one reason why avi is treated as a special case.

ill try to look tomorrow why its 100fps since the previous
codecpar patches. Though 100fps is not nearly as bad as 600fps
600 has ~6 times the overhead

Thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is what and why we do it that matters, not just one of them.


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread James Almer
On 9/5/2016 10:04 PM, James Almer wrote:
> On 9/5/2016 12:41 PM, Michael Niedermayer wrote:
>> On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
>>> From: Clément Bœsch 
>>>
>>> These adjusted codec fields do not seem to be in use anymore and prevent
>>> the convert of ffmpeg*.c to codecpar.
>>
>>  ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
>> fails, no output anymore
>>
>> ./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
>> the output now has 600fps
> 
> Even with this code in place the resulting stream in the avi is reported
> as 100 fps. And with or without the code, the resulting files play the
> same with the players i tried.
> mpc-hc suffers from choppy playback with both files due to tons of dropped
> frames per second, and WMP directly refuses to play it. Only ffplay and
> mpv play both fine.

So apparently libavformat's av_dump_format() reports the stream time base
as fps as well, at least with these files, which explains the odd 100 and
600 fps.
libav's av_dump_format() in contrast correctly reports the fps as 25 in
both.

Both check st->avg_frame_rate to print the fps values.

> 
>>
>> ./ffmpeg -i ~/tickets/236/fcp_export8.mov -codec copy -map 0 out.mov
>> something goes terribly wrong with the timecode tracks
>> "fps 2997 is too large"
>>
>> If you want more cases that this breaks, it should be easy to find
>> i think fate does not test stream copy very well
>>
>> [...]
>>
>>
>>
>> ___
>> 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] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread James Almer
On 9/5/2016 12:41 PM, Michael Niedermayer wrote:
> On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
>> From: Clément Bœsch 
>>
>> These adjusted codec fields do not seem to be in use anymore and prevent
>> the convert of ffmpeg*.c to codecpar.
> 
>  ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
> fails, no output anymore
> 
> ./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
> the output now has 600fps

Even with this code in place the resulting stream in the avi is reported
as 100 fps. And with or without the code, the resulting files play the
same with the players i tried.
mpc-hc suffers from choppy playback with both files due to tons of dropped
frames per second, and WMP directly refuses to play it. Only ffplay and
mpv play both fine.

> 
> ./ffmpeg -i ~/tickets/236/fcp_export8.mov -codec copy -map 0 out.mov
> something goes terribly wrong with the timecode tracks
> "fps 2997 is too large"
> 
> If you want more cases that this breaks, it should be easy to find
> i think fate does not test stream copy very well
> 
> [...]
> 
> 
> 
> ___
> 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] lavf: add ffprobe demuxer

2016-09-05 Thread Andrey Utkin
On Sun, Sep 04, 2016 at 06:24:37PM +0200, Stefano Sabatini wrote:
> +A well-formed file will consists of an initial @samp{FORMAT} section,

I guess either "file will consist" or "file consists" goes here.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Ronald S. Bultje
Hi,

On Mon, Sep 5, 2016 at 7:08 AM, Hendrik Leppkes  wrote:

> On Mon, Sep 5, 2016 at 12:17 PM, Ronald S. Bultje 
> wrote:
> > It was proposed that we could go one step further and do parsing
> > not in the demuxer step (av_read_frame)
>
> Personally, I use avformat demuxing with a bunch of other decoders
> which might still need the parser to run first to re-package frames on
> proper boundaries, so having the decoders do that instead of the
> demuxers sounds like the wrong approach to me.
> A demuxer should ideally output fully re-constructed packages, and not
> a raw bitstream that still needs re-construction before decoding, at
> least IMHO.


It's a good point, we should support both external-demuxer-lavc-decoder as
well as lavf-demuxer-external-decoder. That wasn't addressed in the current
proposal.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Ronald S. Bultje
Hi,

On Mon, Sep 5, 2016 at 6:52 AM, Paul B Mahol  wrote:

> On 9/5/16, Ronald S. Bultje  wrote:
> > Hi,
> >
> > On Sep 5, 2016 12:05 PM, "Michael Niedermayer" 
> > wrote:
> >>
> >> On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
> >> > Hi,
> >> >
> >> > On Sep 5, 2016 11:18 AM, "Michael Niedermayer"  >
> >> > wrote:
> >> > >
> >> > > TODO: version bump, docs
> >> > >
> >> > > Signed-off-by: Michael Niedermayer 
> >> > > ---
> >> > >  libavformat/avformat.h  | 8 
> >> > >  libavformat/options_table.h | 1 +
> >> > >  libavformat/utils.c | 3 +++
> >> > >  3 files changed, 12 insertions(+)
> >> > >
> >> > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> >> > > index 3ee7051..33b921a 100644
> >> > > --- a/libavformat/avformat.h
> >> > > +++ b/libavformat/avformat.h
> >> > > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
> >> > >   * - decoding: set by user through AVOptions (NO direct access)
> >> > >   */
> >> > >  char *protocol_blacklist;
> >> > > +
> >> > > +/**
> >> > > + * Force parsing.
> >> > > + * - encoding: unused
> >> > > + * - decoding: set by user through AVOptions (NO direct access)
> >> > > + */
> >> > > +int force_parsing;
> >> > > +
> >> > >  } AVFormatContext;
> >> > >
> >> > >  int av_format_get_probe_score(const AVFormatContext *s);
> >> > > diff --git a/libavformat/options_table.h
> b/libavformat/options_table.h
> >> > > index 3b74d1b..359796c 100644
> >> > > --- a/libavformat/options_table.h
> >> > > +++ b/libavformat/options_table.h
> >> > > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
> >> > >  {"format_whitelist", "List of demuxers that are allowed to be
> used",
> >> > OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
> >  CHAR_MIN,
> >> > CHAR_MAX, D },
> >> > >  {"protocol_whitelist", "List of protocols that are allowed to be
> > used",
> >> > OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
> >  CHAR_MIN,
> >> > CHAR_MAX, D },
> >> > >  {"protocol_blacklist", "List of protocols that are not allowed to
> be
> >> > used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL
> },
> >> > CHAR_MIN, CHAR_MAX, D },
> >> > > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
> >> > AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
> >> > >  {NULL},
> >> > >  };
> >> >
> >> > Why int?
> >>
> >> what else ?
> >> a flag doesnt work as AVStreamParseType has more than 1 value
> >
> > An enum would be nice.
> >
> >> > At vdd, we discussed parsers, maybe we should sync on that because I
> >> > believe it makes this unnecessary.
> >>
> >> not sure i understand what you suggest ?
> >
> > Anton expressed interest in merging parsers and bitstream filters. I
> > believe they are (other than semantically) identical in goal, and the
> > semantic difference is sometimes violated already. If you think of them
> as
> > bitstream filters, we could merge their functionality with auto-insertion
> > of BSF. It was proposed that we could go one step further and do parsing
> > not in the demuxer step (av_read_frame), but before the decoder (which
> is a
> > change) and in the muxer (which we already do). Auto-insertion mechanisms
> > would be shared and this would lead to interesting new features that
> > someone demuxing a mpeg system stream or vp9/divx-with-packed-b-frames
> > using external tools (which don't split/reframe) but using avcodec
> decoders
> > would still see it work. On the other hand, people using lavf to demux
> such
> > streams would not need to merge (divx/vp9) before muxing, making that
> > process more efficient (using lavf) or less buggy (using non-lavf
> muxers).
>
> Are you telling that using non-lavf muxers is less buggy?


No.

Just that people are using it like that (sometimes).

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Ronald S. Bultje
Hi,

On Mon, Sep 5, 2016 at 6:49 AM, Michael Niedermayer 
wrote:

> On Mon, Sep 05, 2016 at 06:17:02AM -0400, Ronald S. Bultje wrote:
> > Hi,
> >
> > On Sep 5, 2016 12:05 PM, "Michael Niedermayer" 
> > wrote:
> > >
> > > On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
> > > > Hi,
> > > >
> > > > On Sep 5, 2016 11:18 AM, "Michael Niedermayer"
> 
> > > > wrote:
> > > > >
> > > > > TODO: version bump, docs
> > > > >
> > > > > Signed-off-by: Michael Niedermayer 
> > > > > ---
> > > > >  libavformat/avformat.h  | 8 
> > > > >  libavformat/options_table.h | 1 +
> > > > >  libavformat/utils.c | 3 +++
> > > > >  3 files changed, 12 insertions(+)
> > > > >
> > > > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > > > > index 3ee7051..33b921a 100644
> > > > > --- a/libavformat/avformat.h
> > > > > +++ b/libavformat/avformat.h
> > > > > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
> > > > >   * - decoding: set by user through AVOptions (NO direct
> access)
> > > > >   */
> > > > >  char *protocol_blacklist;
> > > > > +
> > > > > +/**
> > > > > + * Force parsing.
> > > > > + * - encoding: unused
> > > > > + * - decoding: set by user through AVOptions (NO direct
> access)
> > > > > + */
> > > > > +int force_parsing;
> > > > > +
> > > > >  } AVFormatContext;
> > > > >
> > > > >  int av_format_get_probe_score(const AVFormatContext *s);
> > > > > diff --git a/libavformat/options_table.h
> b/libavformat/options_table.h
> > > > > index 3b74d1b..359796c 100644
> > > > > --- a/libavformat/options_table.h
> > > > > +++ b/libavformat/options_table.h
> > > > > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
> > > > >  {"format_whitelist", "List of demuxers that are allowed to be
> used",
> > > > OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
> >  CHAR_MIN,
> > > > CHAR_MAX, D },
> > > > >  {"protocol_whitelist", "List of protocols that are allowed to be
> > used",
> > > > OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
> >  CHAR_MIN,
> > > > CHAR_MAX, D },
> > > > >  {"protocol_blacklist", "List of protocols that are not allowed to
> be
> > > > used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL
> },
> > > > CHAR_MIN, CHAR_MAX, D },
> > > > > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
> > > > AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
> > > > >  {NULL},
> > > > >  };
> > > >
> > > > Why int?
> > >
> > > what else ?
> > > a flag doesnt work as AVStreamParseType has more than 1 value
> >
> > An enum would be nice.
>
> enums are not guranteed to be stored in a specific data type
> 2 enums could be stored in different data types, one could be int16
> one uint32 one int64
> that makes using enums with AVOption difficult. (which is why i
> used an int)


Named options, or whatever you want to call it.

AVOptions supports it, please use it.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 2/2] avfilter/fifo: Make independent of the channel layout

2016-09-05 Thread Paul B Mahol
On 9/6/16, Michael Niedermayer  wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  libavfilter/fifo.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>

should be ok
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] avfilter/fifo: Make independent of the channel layout

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavfilter/fifo.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavfilter/fifo.c b/libavfilter/fifo.c
index f0b77ff..abfbba1 100644
--- a/libavfilter/fifo.c
+++ b/libavfilter/fifo.c
@@ -104,7 +104,7 @@ static void queue_pop(FifoContext *s)
 static void buffer_offset(AVFilterLink *link, AVFrame *frame,
   int offset)
 {
-int nb_channels = av_get_channel_layout_nb_channels(link->channel_layout);
+int nb_channels = link->channels;
 int planar = av_sample_fmt_is_planar(link->format);
 int planes = planar ? nb_channels : 1;
 int block_align = av_get_bytes_per_sample(link->format) * (planar ? 1 : 
nb_channels);
@@ -129,7 +129,7 @@ static void buffer_offset(AVFilterLink *link, AVFrame 
*frame,
 static int calc_ptr_alignment(AVFrame *frame)
 {
 int planes = av_sample_fmt_is_planar(frame->format) ?
- av_get_channel_layout_nb_channels(frame->channel_layout) : 1;
+ av_frame_get_channels(frame) : 1;
 int min_align = 128;
 int p;
 
@@ -170,7 +170,7 @@ static int return_audio_frame(AVFilterContext *ctx)
 buffer_offset(link, head, link->request_samples);
 }
 } else {
-int nb_channels = 
av_get_channel_layout_nb_channels(link->channel_layout);
+int nb_channels = link->channels;
 
 if (!s->out) {
 s->out = ff_get_audio_buffer(link, link->request_samples);
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/2] avfilter/avf_concat: Make independent of the channel layout

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavfilter/avf_concat.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavfilter/avf_concat.c b/libavfilter/avf_concat.c
index 4fa9447..56e4179 100644
--- a/libavfilter/avf_concat.c
+++ b/libavfilter/avf_concat.c
@@ -260,7 +260,6 @@ static int send_silence(AVFilterContext *ctx, unsigned 
in_no, unsigned out_no,
 int frame_nb_samples, ret;
 AVRational rate_tb = { 1, ctx->inputs[in_no]->sample_rate };
 AVFrame *buf;
-int nb_channels = 
av_get_channel_layout_nb_channels(outlink->channel_layout);
 
 if (!rate_tb.den)
 return AVERROR_BUG;
@@ -273,7 +272,7 @@ static int send_silence(AVFilterContext *ctx, unsigned 
in_no, unsigned out_no,
 if (!buf)
 return AVERROR(ENOMEM);
 av_samples_set_silence(buf->extended_data, 0, frame_nb_samples,
-   nb_channels, outlink->format);
+   outlink->channels, outlink->format);
 buf->pts = base_pts + av_rescale_q(sent, rate_tb, outlink->time_base);
 ret = ff_filter_frame(outlink, buf);
 if (ret < 0)
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter/af_atempo: Make independent of the channel layout

2016-09-05 Thread Paul B Mahol
On 9/6/16, Michael Niedermayer  wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  libavfilter/af_atempo.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>

lgtm
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter/af_amix: make independent of the channel layout

2016-09-05 Thread Paul B Mahol
On 9/6/16, Michael Niedermayer  wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  libavfilter/af_amix.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>

lgtm
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avfilter/af_atempo: Make independent of the channel layout

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavfilter/af_atempo.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
index 7b3d57c..d5d29b3 100644
--- a/libavfilter/af_atempo.c
+++ b/libavfilter/af_atempo.c
@@ -1044,9 +1044,8 @@ static int config_props(AVFilterLink *inlink)
 
 enum AVSampleFormat format = inlink->format;
 int sample_rate = (int)inlink->sample_rate;
-int channels = av_get_channel_layout_nb_channels(inlink->channel_layout);
 
-return yae_reset(atempo, format, sample_rate, channels);
+return yae_reset(atempo, format, sample_rate, inlink->channels);
 }
 
 static int push_samples(ATempoContext *atempo,
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avfilter/af_amix: make independent of the channel layout

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavfilter/af_amix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c
index 3e5e7ee..0e32c8a 100644
--- a/libavfilter/af_amix.c
+++ b/libavfilter/af_amix.c
@@ -235,7 +235,7 @@ static int config_output(AVFilterLink *outlink)
 if (!s->fifos)
 return AVERROR(ENOMEM);
 
-s->nb_channels = 
av_get_channel_layout_nb_channels(outlink->channel_layout);
+s->nb_channels = outlink->channels;
 for (i = 0; i < s->nb_inputs; i++) {
 s->fifos[i] = av_audio_fifo_alloc(outlink->format, s->nb_channels, 
1024);
 if (!s->fifos[i])
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avfilter/af_amerge: allow merging 1 input only

2016-09-05 Thread Marton Balint
Useful when the amerge filter parameters are generated from a script based on
the number of input streams, by allowing 1 input it does not have to be handled
specially.

The split filter also allows 1 output, so it is more consistent to allow
merging 1 input as well.

Signed-off-by: Marton Balint 
---
 libavfilter/af_amerge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c
index 2b4edb0..4a8c6d5 100644
--- a/libavfilter/af_amerge.c
+++ b/libavfilter/af_amerge.c
@@ -52,7 +52,7 @@ typedef struct {
 
 static const AVOption amerge_options[] = {
 { "inputs", "specify the number of inputs", OFFSET(nb_inputs),
-  AV_OPT_TYPE_INT, { .i64 = 2 }, 2, SWR_CH_MAX, FLAGS },
+  AV_OPT_TYPE_INT, { .i64 = 2 }, 1, SWR_CH_MAX, FLAGS },
 { NULL }
 };
 
-- 
2.6.6

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avfilter/af_volumedetect: Remove dependency on channel layout

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavfilter/af_volumedetect.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c
index 4815bcc..c6a6dba 100644
--- a/libavfilter/af_volumedetect.c
+++ b/libavfilter/af_volumedetect.c
@@ -51,9 +51,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame 
*samples)
 {
 AVFilterContext *ctx = inlink->dst;
 VolDetectContext *vd = ctx->priv;
-int64_t layout  = samples->channel_layout;
 int nb_samples  = samples->nb_samples;
-int nb_channels = av_get_channel_layout_nb_channels(layout);
+int nb_channels = av_frame_get_channels(samples);
 int nb_planes   = nb_channels;
 int plane, i;
 int16_t *pcm;
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter/af_amerge: add reorder_inputs option to be able to turn off reordering

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 04:43:02PM +0200, Nicolas George wrote:
> Le decadi 20 fructidor, an CCXXIV, Marton Balint a écrit :
> > The order of the channels to remain unchanged regardless of the input
> > channel layout (which is often guessed only). Filtering in ffmpeg is
> > unfortunately forcing you to use channel layouts, even if you don't want to,
> > even if you only want to say: this track has 2 channels, that stream track
> > has 1 channels. Don't assume anything else.
> 
> I feel Carl Eugen has the right of it.
> 

> libavfilter can work with streams with unknown layouts, but some individual
> filters may not. To make them work is relatively easy. First, make sure they
> do not use the channel layout: most filters from the fork will use the
> channel layout to know the number of channels, we have a separated field for
> that. Then declare accordingly the list of formats in query formats.

is there some easy way to identify test for filters that require
the layout unneccessary ?
"git grep av_get_channel_layout_nb_channels" and manual checking ?

I might be interrested to help fixing these ...

thx
[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Never trust a computer, one day, it may think you are the virus. -- Compn


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter/af_amerge: add reorder_inputs option to be able to turn off reordering

2016-09-05 Thread Marton Balint


On Mon, 5 Sep 2016, Nicolas George wrote:


Le decadi 20 fructidor, an CCXXIV, Marton Balint a écrit :

The order of the channels to remain unchanged regardless of the input
channel layout (which is often guessed only). Filtering in ffmpeg is
unfortunately forcing you to use channel layouts, even if you don't want to,
even if you only want to say: this track has 2 channels, that stream track
has 1 channels. Don't assume anything else.


I feel Carl Eugen has the right of it.

libavfilter can work with streams with unknown layouts, but some individual
filters may not. To make them work is relatively easy. First, make sure they
do not use the channel layout: most filters from the fork will use the
channel layout to know the number of channels, we have a separated field for
that. Then declare accordingly the list of formats in query formats.

The real problem is ffmpeg.c: it will try to guess the channel layout when
none is specified. I think I added an option to avoid that, but it may have
been lost at some point.

And of course, most of the time, there is a channel layout, you just have to
make sure it is properly set at input and let the logic do its work.


The work needed fixing this is definitely not comparable to the work I 
did creating this patch, or the work anyone will have to do maintaining 
it. Asking me to go in this direction, seems an unreasonable amount of 
extra work for me, and most probably I will not do it, and rather abandon 
the patch, or maintain it privately.



Another example: You have a file, with mono tracks. Some tracks have correct
metadata describing the channel layout of the files, others don't.

  
This is what needs fixing.


I don't trust the input channel layouts, I want to specify that all my 
input channel layouts are unkown. Can/will I do this with -channel_layout 
0 or something like that?



 You wan't
the channels in file-order, regardless of the correctness of the input
channel layout metadata in the file.


Not true. Codecs work with the channel layouts, for inter-channel
correlation, for the cutoff frequency on the subwoofer, etc.



Sure, I plan to use uncompressed audio on the output side.

Regards,
Marton
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter: add ablur filter

2016-09-05 Thread Paul B Mahol
On 9/5/16, James Almer  wrote:
> On 9/5/2016 12:03 PM, Paul B Mahol wrote:
>> Signed-off-by: Paul B Mahol 
>> ---
>>  doc/filters.texi |  18 +++
>>  libavfilter/Makefile |   1 +
>>  libavfilter/allfilters.c |   1 +
>>  libavfilter/vf_ablur.c   | 341
>> +++
>>  4 files changed, 361 insertions(+)
>>  create mode 100644 libavfilter/vf_ablur.c
>>
>> diff --git a/doc/filters.texi b/doc/filters.texi
>> index 99f07a6..9277841 100644
>> --- a/doc/filters.texi
>> +++ b/doc/filters.texi
>> @@ -4310,6 +4310,24 @@ build.
>>
>>  Below is a description of the currently available video filters.
>>
>> +@section ablur
>> +
>> +Apply average blur filter.
>

renamed
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 2/4] test/fate: Add Ticket 236 / mov stream copy test

2016-09-05 Thread James Almer
On 9/5/2016 2:58 PM, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  tests/fate/ffmpeg.mak   | 5 +
>  tests/ref/fate/copy-236 | 2 ++
>  2 files changed, 7 insertions(+)
>  create mode 100644 tests/ref/fate/copy-236
> 
> diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
> index 3b91c12..e896d05 100644
> --- a/tests/fate/ffmpeg.mak
> +++ b/tests/fate/ffmpeg.mak
> @@ -51,6 +51,11 @@ fate-unknown_layout-ac3: CMD = md5 \
>-guess_layout_max 0 -f s16le -ac 1 -ar 44100 -i $(TARGET_PATH)/$(AREF) \
>-f ac3 -flags +bitexact -c ac3_fixed
>  
> +FATE_SAMPLES_FFMPEG-$(call ALLYES, MOV_DEMUXER MOV_MUXER) += fate-copy-236
> +fate-copy-236: $(TARGET_SAMPLES)/mov/fcp_export8-236.mov

trac236? Otherwise the name gives no hints about what it's testing.
We already named some tests like this. See vpx.mak

This also applies for Patch 3/4.

> +fate-copy-236: CMD = transcode mov $(TARGET_SAMPLES)/mov/fcp_export8-236.mov\
> + mov "-codec copy -map 0"
> +
>  FATE_SAMPLES_FFMPEG-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek 
> fate-limited_input_seek-copyts
>  fate-limited_input_seek: $(TARGET_SAMPLES)/vorbis/moog_small.ogg
>  fate-limited_input_seek: CMD = md5 -ss 1.5 -t 1.3 -i 
> $(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -fflags +bitexact -f ogg
> diff --git a/tests/ref/fate/copy-236 b/tests/ref/fate/copy-236
> new file mode 100644
> index 000..58a5537
> --- /dev/null
> +++ b/tests/ref/fate/copy-236
> @@ -0,0 +1,2 @@
> +9b95afdb39b426a33bc962889f820aed *tests/data/fate/copy-236.mov
> +630802 tests/data/fate/copy-236.mov
> 

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avfilter: add ablur filter

2016-09-05 Thread James Almer
On 9/5/2016 12:03 PM, Paul B Mahol wrote:
> Signed-off-by: Paul B Mahol 
> ---
>  doc/filters.texi |  18 +++
>  libavfilter/Makefile |   1 +
>  libavfilter/allfilters.c |   1 +
>  libavfilter/vf_ablur.c   | 341 
> +++
>  4 files changed, 361 insertions(+)
>  create mode 100644 libavfilter/vf_ablur.c
> 
> diff --git a/doc/filters.texi b/doc/filters.texi
> index 99f07a6..9277841 100644
> --- a/doc/filters.texi
> +++ b/doc/filters.texi
> @@ -4310,6 +4310,24 @@ build.
>  
>  Below is a description of the currently available video filters.
>  
> +@section ablur
> +
> +Apply average blur filter.

Maybe call it avgblur then? "aNAME" is often used to name audio filters
when a NAME one already exists for video, like it's the case for format
and aformat, or pad and apad.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 4/4] tests/fate/ffmpeg: add simple ts->avi copy test

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 tests/fate/ffmpeg.mak| 5 +
 tests/ref/fate/copy-4914-avi | 2 ++
 2 files changed, 7 insertions(+)
 create mode 100644 tests/ref/fate/copy-4914-avi

diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
index 22e0e62..7315c01 100644
--- a/tests/fate/ffmpeg.mak
+++ b/tests/fate/ffmpeg.mak
@@ -61,6 +61,11 @@ fate-copy-4914: $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts
 fate-copy-4914: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\
   mxf "-c:a pcm_s16le -c:v copy"
 
+FATE_SAMPLES_FFMPEG-$(call ALLYES, MPEGTS_DEMUXER AVI_MUXER) += 
fate-copy-4914-avi
+fate-copy-4914-avi: $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts
+fate-copy-4914-avi: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\
+  avi "-c:a copy -c:v copy"
+
 FATE_SAMPLES_FFMPEG-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek 
fate-limited_input_seek-copyts
 fate-limited_input_seek: $(TARGET_SAMPLES)/vorbis/moog_small.ogg
 fate-limited_input_seek: CMD = md5 -ss 1.5 -t 1.3 -i 
$(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -fflags +bitexact -f ogg
diff --git a/tests/ref/fate/copy-4914-avi b/tests/ref/fate/copy-4914-avi
new file mode 100644
index 000..8c6b1c9
--- /dev/null
+++ b/tests/ref/fate/copy-4914-avi
@@ -0,0 +1,2 @@
+e948f10c90f526ae2c0cf234e1f54128 *tests/data/fate/copy-4914-avi.avi
+480886 tests/data/fate/copy-4914-avi.avi
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 3/4] tests/fate/ffmpeg: add test for mpegts->mxf steram copy (Ticket 4914)

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 tests/fate/ffmpeg.mak| 5 +
 tests/ref/fate/copy-4914 | 2 ++
 2 files changed, 7 insertions(+)
 create mode 100644 tests/ref/fate/copy-4914

diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
index e896d05..22e0e62 100644
--- a/tests/fate/ffmpeg.mak
+++ b/tests/fate/ffmpeg.mak
@@ -56,6 +56,11 @@ fate-copy-236: $(TARGET_SAMPLES)/mov/fcp_export8-236.mov
 fate-copy-236: CMD = transcode mov $(TARGET_SAMPLES)/mov/fcp_export8-236.mov\
  mov "-codec copy -map 0"
 
+FATE_SAMPLES_FFMPEG-$(call ALLYES, MPEGTS_DEMUXER MXF_MUXER PCM_S16LE_ENCODER) 
+= fate-copy-4914
+fate-copy-4914: $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts
+fate-copy-4914: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\
+  mxf "-c:a pcm_s16le -c:v copy"
+
 FATE_SAMPLES_FFMPEG-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek 
fate-limited_input_seek-copyts
 fate-limited_input_seek: $(TARGET_SAMPLES)/vorbis/moog_small.ogg
 fate-limited_input_seek: CMD = md5 -ss 1.5 -t 1.3 -i 
$(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -fflags +bitexact -f ogg
diff --git a/tests/ref/fate/copy-4914 b/tests/ref/fate/copy-4914
new file mode 100644
index 000..50f7d32
--- /dev/null
+++ b/tests/ref/fate/copy-4914
@@ -0,0 +1,2 @@
+84316a64b609052d9974891686fbf607 *tests/data/fate/copy-4914.mxf
+566329 tests/data/fate/copy-4914.mxf
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/4] test/fate: Add Ticket 236 / mov stream copy test

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 tests/fate/ffmpeg.mak   | 5 +
 tests/ref/fate/copy-236 | 2 ++
 2 files changed, 7 insertions(+)
 create mode 100644 tests/ref/fate/copy-236

diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
index 3b91c12..e896d05 100644
--- a/tests/fate/ffmpeg.mak
+++ b/tests/fate/ffmpeg.mak
@@ -51,6 +51,11 @@ fate-unknown_layout-ac3: CMD = md5 \
   -guess_layout_max 0 -f s16le -ac 1 -ar 44100 -i $(TARGET_PATH)/$(AREF) \
   -f ac3 -flags +bitexact -c ac3_fixed
 
+FATE_SAMPLES_FFMPEG-$(call ALLYES, MOV_DEMUXER MOV_MUXER) += fate-copy-236
+fate-copy-236: $(TARGET_SAMPLES)/mov/fcp_export8-236.mov
+fate-copy-236: CMD = transcode mov $(TARGET_SAMPLES)/mov/fcp_export8-236.mov\
+ mov "-codec copy -map 0"
+
 FATE_SAMPLES_FFMPEG-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek 
fate-limited_input_seek-copyts
 fate-limited_input_seek: $(TARGET_SAMPLES)/vorbis/moog_small.ogg
 fate-limited_input_seek: CMD = md5 -ss 1.5 -t 1.3 -i 
$(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -fflags +bitexact -f ogg
diff --git a/tests/ref/fate/copy-236 b/tests/ref/fate/copy-236
new file mode 100644
index 000..58a5537
--- /dev/null
+++ b/tests/ref/fate/copy-236
@@ -0,0 +1,2 @@
+9b95afdb39b426a33bc962889f820aed *tests/data/fate/copy-236.mov
+630802 tests/data/fate/copy-236.mov
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/4] tests/fate-run: add transcode() as a simplified enc_dec()

2016-09-05 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 tests/fate-run.sh | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 5841b0c..8c3938a 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -192,6 +192,21 @@ enc_dec(){
 tests/tiny_psnr $srcfile $decfile $cmp_unit $cmp_shift
 }
 
+transcode(){
+src_fmt=$1
+srcfile=$2
+enc_fmt=$3
+enc_opt=$4
+encfile="${outdir}/${test}.${enc_fmt}"
+test "$7" = -keep || cleanfiles="$cleanfiles $encfile"
+tsrcfile=$(target_path $srcfile)
+tencfile=$(target_path $encfile)
+ffmpeg -f $src_fmt $DEC_OPTS -i $tsrcfile $ENC_OPTS $enc_opt $FLAGS \
+-f $enc_fmt -y $tencfile || return
+do_md5sum $encfile
+echo $(wc -c $encfile)
+}
+
 lavffatetest(){
 t="${test#lavf-fate-}"
 ref=${base}/ref/lavf-fate/$t
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] typo in file ffmpeg_vaapi.c at line 305

2016-09-05 Thread Mihai Chindea
https://github.com/FFmpeg/FFmpeg/blob/master/ffmpeg_vaapi.c#L305 
i imagine it should test with ctx->output_format, not ctx->decode_format which 
is always AV_PIX_FMT_NONE due to previous assignment ...

Regards,
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] PATCH: dshow prevent some windows 10 anniv. ed crashes

2016-09-05 Thread Roger Pack
On 9/4/16, Carl Eugen Hoyos  wrote:
> Hi!
>
> 2016-08-20 12:09 GMT+02:00 Timo Rothenpieler :
>> On 8/19/2016 3:28 PM, Roger Pack wrote:
>>> No complaints, would someone please push it for me? Sorry still
>>> haven't figured out the key thing yet.
>>
>> pushed
>
> Did this fix ticket #5775?

Not entirely, still readying another patch FWIW.

> Carl Eugen
> ___
> 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 v5 5/5] avformat/tee: Use BSF list API

2016-09-05 Thread Jan Sebechlebsky

On 09/01/2016 09:42 PM, sebechlebsky...@gmail.com wrote:


From: Jan Sebechlebsky 

Signed-off-by: Jan Sebechlebsky 
---
  Changes since the last version of the patch:
  - added check for  avcodec_parameters_copy return value
  - fixed stray space
  - rewritten cycle receiving packets from bsf so case when 
av_interleaved_write_frame
returns EAGAIN is treated as error.

  libavformat/tee.c | 137 --
  1 file changed, 70 insertions(+), 67 deletions(-)


Can I push this?

Regards,
Jan
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 05:49:10PM +0200, Clément Bœsch wrote:
> On Mon, Sep 05, 2016 at 05:41:25PM +0200, Michael Niedermayer wrote:
> > On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
> > > From: Clément Bœsch 
> > > 
> > > These adjusted codec fields do not seem to be in use anymore and prevent
> > > the convert of ffmpeg*.c to codecpar.
> > 
> >  ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
> > fails, no output anymore
> > 
> > ./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
> > the output now has 600fps
> > 
> > ./ffmpeg -i ~/tickets/236/fcp_export8.mov -codec copy -map 0 out.mov
> > something goes terribly wrong with the timecode tracks
> > "fps 2997 is too large"
> > 
> > If you want more cases that this breaks, it should be easy to find
> > i think fate does not test stream copy very well
> 
> Thanks. Such fate tests are likely not very hard to add and would be very
> welcome.

ok, ill see if i can add tests for these

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If you think the mosad wants you dead since a long time then you are either
wrong or dead since a long time.


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread Clément Bœsch
On Mon, Sep 05, 2016 at 05:41:25PM +0200, Michael Niedermayer wrote:
> On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
> > From: Clément Bœsch 
> > 
> > These adjusted codec fields do not seem to be in use anymore and prevent
> > the convert of ffmpeg*.c to codecpar.
> 
>  ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
> fails, no output anymore
> 
> ./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
> the output now has 600fps
> 
> ./ffmpeg -i ~/tickets/236/fcp_export8.mov -codec copy -map 0 out.mov
> something goes terribly wrong with the timecode tracks
> "fps 2997 is too large"
> 
> If you want more cases that this breaks, it should be easy to find
> i think fate does not test stream copy very well

Thanks. Such fate tests are likely not very hard to add and would be very
welcome.

-- 
Clément B.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 04:41:52PM +0200, Clément Bœsch wrote:
> From: Clément Bœsch 
> 
> These adjusted codec fields do not seem to be in use anymore and prevent
> the convert of ffmpeg*.c to codecpar.

 ./ffmpeg  -i ~/tickets/4914/xdcam8mp2-1s_small.ts -c:v copy out.mxf
fails, no output anymore

./ffmpeg -i matrixbench_mpeg2.mpg -c:v copy -t 1 test.avi
the output now has 600fps

./ffmpeg -i ~/tickets/236/fcp_export8.mov -codec copy -map 0 out.mov
something goes terribly wrong with the timecode tracks
"fps 2997 is too large"

If you want more cases that this breaks, it should be easy to find
i think fate does not test stream copy very well

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Never trust a computer, one day, it may think you are the virus. -- Compn


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf: add ffprobe demuxer

2016-09-05 Thread Nicolas George
Le decadi 20 fructidor, an CCXXIV, Paul B Mahol a écrit :
> What is "output" in this context?

Imagine you are trying to debug a problem in filters with a particular file.
You suspect an issue with timestamps, or with whatever. To check, you may
want to change the input file slightly. This is not very easy to do right
now. With this patch, ffprobe the input file, then edit the resulting text
file to make your changes with any text editor.

Regards,

-- 
  Nicolas George


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avfilter: add ablur filter

2016-09-05 Thread Paul B Mahol
Signed-off-by: Paul B Mahol 
---
 doc/filters.texi |  18 +++
 libavfilter/Makefile |   1 +
 libavfilter/allfilters.c |   1 +
 libavfilter/vf_ablur.c   | 341 +++
 4 files changed, 361 insertions(+)
 create mode 100644 libavfilter/vf_ablur.c

diff --git a/doc/filters.texi b/doc/filters.texi
index 99f07a6..9277841 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -4310,6 +4310,24 @@ build.
 
 Below is a description of the currently available video filters.
 
+@section ablur
+
+Apply average blur filter.
+
+The filter accepts the following options:
+
+@table @option
+@item sizeX
+Set horizontal kernel size.
+
+@item planes
+Set which planes to filter. By default all planes are filtered.
+
+@item sizeY
+Set vertical kernel size, if zero it will be same as @code{sizeX}.
+Default is @code{0}.
+@end table
+
 @section alphaextract
 
 Extract the alpha component from the input as a grayscale video. This
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 52b148a..08e4159 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -120,6 +120,7 @@ OBJS-$(CONFIG_SINE_FILTER)   += asrc_sine.o
 OBJS-$(CONFIG_ANULLSINK_FILTER)  += asink_anullsink.o
 
 # video filters
+OBJS-$(CONFIG_ABLUR_FILTER)  += vf_ablur.o
 OBJS-$(CONFIG_ALPHAEXTRACT_FILTER)   += vf_extractplanes.o
 OBJS-$(CONFIG_ALPHAMERGE_FILTER) += vf_alphamerge.o
 OBJS-$(CONFIG_ASS_FILTER)+= vf_subtitles.o
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
index ac8b41d..7dd306a 100644
--- a/libavfilter/allfilters.c
+++ b/libavfilter/allfilters.c
@@ -137,6 +137,7 @@ void avfilter_register_all(void)
 
 REGISTER_FILTER(ANULLSINK,  anullsink,  asink);
 
+REGISTER_FILTER(ABLUR,  ablur,  vf);
 REGISTER_FILTER(ALPHAEXTRACT,   alphaextract,   vf);
 REGISTER_FILTER(ALPHAMERGE, alphamerge, vf);
 REGISTER_FILTER(ASS,ass,vf);
diff --git a/libavfilter/vf_ablur.c b/libavfilter/vf_ablur.c
new file mode 100644
index 000..d678f4a
--- /dev/null
+++ b/libavfilter/vf_ablur.c
@@ -0,0 +1,341 @@
+/*
+ * Copyright (c) 2016 Paul B Mahol
+ *
+ * Redistribution and use in source and binary forms, with or without 
modification,
+ * are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer in the documentation and/or other materials provided
+ *with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "libavutil/imgutils.h"
+#include "libavutil/opt.h"
+#include "libavutil/pixdesc.h"
+#include "avfilter.h"
+#include "formats.h"
+#include "internal.h"
+#include "video.h"
+
+typedef struct ABlurContext {
+const AVClass *class;
+
+int radius;
+int radiusV;
+int planes;
+
+int depth;
+int planewidth[4];
+int planeheight[4];
+float *buffer;
+int nb_planes;
+} ABlurContext;
+
+#define OFFSET(x) offsetof(ABlurContext, x)
+#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
+
+static const AVOption ablur_options[] = {
+{ "sizeX",  "set horizontal size",  OFFSET(radius),  AV_OPT_TYPE_INT, 
{.i64=1},   1, 1024, FLAGS },
+{ "planes", "set planes to filter", OFFSET(planes),  AV_OPT_TYPE_INT, 
{.i64=0xF}, 0,  0xF, FLAGS },
+{ "sizeY",  "set vertical size",OFFSET(radiusV), AV_OPT_TYPE_INT, 
{.i64=0},   0, 1024, FLAGS },
+{ NULL }
+};
+
+AVFILTER_DEFINE_CLASS(ablur);
+
+typedef struct ThreadData {
+int height;
+int width;
+} ThreadData;
+
+static int filter_horizontally(AVFilterContext *ctx, void *arg, int jobnr, int 
nb_jobs)
+{
+ABlurContext *s = ctx->priv;
+ThreadData *td = arg;
+const int height = td->height;
+const int width = td->width;
+const int slice_start = (height *  jobnr   ) / nb_jobs;
+const int slice_end   = (height * (jobnr+1)) / nb_jobs;
+const int radius = FFMIN(s->radius, width / 2);
+

Re: [FFmpeg-devel] [PATCH] avfilter/af_amerge: add reorder_inputs option to be able to turn off reordering

2016-09-05 Thread Nicolas George
Le decadi 20 fructidor, an CCXXIV, Marton Balint a écrit :
> The order of the channels to remain unchanged regardless of the input
> channel layout (which is often guessed only). Filtering in ffmpeg is
> unfortunately forcing you to use channel layouts, even if you don't want to,
> even if you only want to say: this track has 2 channels, that stream track
> has 1 channels. Don't assume anything else.

I feel Carl Eugen has the right of it.

libavfilter can work with streams with unknown layouts, but some individual
filters may not. To make them work is relatively easy. First, make sure they
do not use the channel layout: most filters from the fork will use the
channel layout to know the number of channels, we have a separated field for
that. Then declare accordingly the list of formats in query formats.

The real problem is ffmpeg.c: it will try to guess the channel layout when
none is specified. I think I added an option to avoid that, but it may have
been lost at some point.

And of course, most of the time, there is a channel layout, you just have to
make sure it is properly set at input and let the logic do its work.

> Another example: You have a file, with mono tracks. Some tracks have correct
> metadata describing the channel layout of the files, others don't.
   
This is what needs fixing.

>You wan't
> the channels in file-order, regardless of the correctness of the input
> channel layout metadata in the file.

Not true. Codecs work with the channel layouts, for inter-channel
correlation, for the cutoff frequency on the subwoofer, etc.

Regards,

-- 
  Nicolas George


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] ffmpeg: drop format specific stream copy heuristics

2016-09-05 Thread Clément Bœsch
From: Clément Bœsch 

These adjusted codec fields do not seem to be in use anymore and prevent
the convert of ffmpeg*.c to codecpar.
---
 ffmpeg.c | 42 --
 1 file changed, 42 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index d858407..9516b2d 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2910,48 +2910,6 @@ static int transcode_init(void)
 enc_ctx->bits_per_raw_sample= dec_ctx->bits_per_raw_sample;
 
 enc_ctx->time_base = ist->st->time_base;
-/*
- * Avi is a special case here because it supports variable fps but
- * having the fps and timebase differe significantly adds quite 
some
- * overhead
- */
-if(!strcmp(oc->oformat->name, "avi")) {
-if ( copy_tb<0 && ist->st->r_frame_rate.num
-   && av_q2d(ist->st->r_frame_rate) >= 
av_q2d(ist->st->avg_frame_rate)
-   && 0.5/av_q2d(ist->st->r_frame_rate) > 
av_q2d(ist->st->time_base)
-   && 0.5/av_q2d(ist->st->r_frame_rate) > 
av_q2d(dec_ctx->time_base)
-   && av_q2d(ist->st->time_base) < 1.0/500 && 
av_q2d(dec_ctx->time_base) < 1.0/500
- || copy_tb==2){
-enc_ctx->time_base.num = ist->st->r_frame_rate.den;
-enc_ctx->time_base.den = 2*ist->st->r_frame_rate.num;
-enc_ctx->ticks_per_frame = 2;
-} else if (   copy_tb<0 && 
av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > 
2*av_q2d(ist->st->time_base)
- && av_q2d(ist->st->time_base) < 1.0/500
-|| copy_tb==0){
-enc_ctx->time_base = dec_ctx->time_base;
-enc_ctx->time_base.num *= dec_ctx->ticks_per_frame;
-enc_ctx->time_base.den *= 2;
-enc_ctx->ticks_per_frame = 2;
-}
-} else if(!(oc->oformat->flags & AVFMT_VARIABLE_FPS)
-  && strcmp(oc->oformat->name, "mov") && 
strcmp(oc->oformat->name, "mp4") && strcmp(oc->oformat->name, "3gp")
-  && strcmp(oc->oformat->name, "3g2") && 
strcmp(oc->oformat->name, "psp") && strcmp(oc->oformat->name, "ipod")
-  && strcmp(oc->oformat->name, "f4v")
-) {
-if(   copy_tb<0 && dec_ctx->time_base.den
-&& 
av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > av_q2d(ist->st->time_base)
-&& av_q2d(ist->st->time_base) < 1.0/500
-   || copy_tb==0){
-enc_ctx->time_base = dec_ctx->time_base;
-enc_ctx->time_base.num *= dec_ctx->ticks_per_frame;
-}
-}
-if (   enc_ctx->codec_tag == AV_RL32("tmcd")
-&& dec_ctx->time_base.num < dec_ctx->time_base.den
-&& dec_ctx->time_base.num > 0
-&& 121LL*dec_ctx->time_base.num > dec_ctx->time_base.den) {
-enc_ctx->time_base = dec_ctx->time_base;
-}
 
 if (!ost->frame_rate.num)
 ost->frame_rate = ist->framerate;
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] order T-shirts

2016-09-05 Thread Nicolas George
Le nonidi 19 fructidor, an CCXXIV, Ronald S. Bultje a écrit :
> I like it, I still don't have one!

I would very much like to wear FFmpeg t-shirts on occasion too.

Regards,

-- 
  Nicolas George


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf: add ffprobe demuxer

2016-09-05 Thread Paul B Mahol
On 9/4/16, Stefano Sabatini  wrote:
> On date Sunday 2016-09-04 18:27:55 +0200, Paul B Mahol encoded:
>> On 9/4/16, Stefano Sabatini  wrote:
>> > From: Nicolas George 
>> >
>> > With several modifications and documentation by Stefano Sabatini
>> > .
>> >
>> > Signed-off-by: Nicolas George 
>> > ---
>> >  doc/ffprobe-format.texi  | 130 
>> >  libavformat/Makefile |   1 +
>> >  libavformat/allformats.c |   2 +
>> >  libavformat/ffprobedec.c | 397
>> > +++
>> >  4 files changed, 530 insertions(+)
>> >  create mode 100644 doc/ffprobe-format.texi
>> >  create mode 100644 libavformat/ffprobedec.c
>> >
>>
>> Why
>
> This was discussed in the thread:
> [PATCH] lavf: add textdata virtual demuxer and demuxer
>
> Basically, my use case is injecting custom data into an output by
> using an ffmpeg commandline.

What is "output" in this context?
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] lavc/mediacodecdec_h264: use h264_parse.h instead of h264dec.h

2016-09-05 Thread Matthieu Bouron
From: Matthieu Bouron 

ff_h264_decode_extradata is referenced by h264_parse.h and not
h264dec.h.
---
 libavcodec/mediacodecdec_h264.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/mediacodecdec_h264.c b/libavcodec/mediacodecdec_h264.c
index 9b71561..a141174 100644
--- a/libavcodec/mediacodecdec_h264.c
+++ b/libavcodec/mediacodecdec_h264.c
@@ -32,7 +32,7 @@
 #include "libavutil/atomic.h"
 
 #include "avcodec.h"
-#include "h264dec.h"
+#include "h264_parse.h"
 #include "internal.h"
 #include "mediacodecdec.h"
 #include "mediacodec_wrapper.h"
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/2] lavc/mediacodecdec_h264: move bsf variable declaration at the top of the function

2016-09-05 Thread Matthieu Bouron
From: Matthieu Bouron 

---
 libavcodec/mediacodecdec_h264.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mediacodecdec_h264.c b/libavcodec/mediacodecdec_h264.c
index 18f186b..9b71561 100644
--- a/libavcodec/mediacodecdec_h264.c
+++ b/libavcodec/mediacodecdec_h264.c
@@ -129,6 +129,8 @@ static av_cold int mediacodec_decode_init(AVCodecContext 
*avctx)
 int is_avc = 0;
 int nal_length_size = 0;
 
+const AVBitStreamFilter *bsf = NULL;
+
 FFAMediaFormat *format = NULL;
 MediaCodecH264DecContext *s = avctx->priv_data;
 
@@ -205,7 +207,7 @@ static av_cold int mediacodec_decode_init(AVCodecContext 
*avctx)
 goto done;
 }
 
-const AVBitStreamFilter *bsf = av_bsf_get_by_name("h264_mp4toannexb");
+bsf = av_bsf_get_by_name("h264_mp4toannexb");
 if(!bsf) {
 ret = AVERROR_BSF_NOT_FOUND;
 goto done;
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] order T-shirts

2016-09-05 Thread Steven Liu
2016-09-05 19:13 GMT+08:00 Thilo Borgmann :

>
>
>
>
> > Am 05.09.2016 um 02:35 schrieb Lou Logan :
> >
> >> On Sun, Sep 4, 2016, at 01:34 PM, Thomas Volkert wrote:
> >>
> >> If you like or don't like this idea, feel free to leave a comment here.
> >
> > I know some guys who make shirts. I'll get a quote too.
> >
> > Can you provide some images of what the shirts look like?
>
> I like the idea and several people were asking about them.
>
> Maybe the amount of 25 should be raised a bit to have some stock for next
> year... Even more if  Lou can get us a cheaper price.
>
> -Thilo
>

 Perhaps the shirt made in China is very cheap. :-D
  You can design the content on the shirt, and print the content at
China. :-D
  Maybe only about 50-100 Yuan RMB(about equal to 6-12 Euro )in China.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/5] af_hdcd: hdcd_analyze_gen() using int instead of float

2016-09-05 Thread Burt P
Signed-off-by: Burt P 
---
 libavfilter/af_hdcd.c | 9 -
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index cde2340..c8bda82 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -1316,11 +1316,10 @@ static void hdcd_analyze_prepare(hdcd_state *state, 
int32_t *samples, int count,
 /** encode a value in the given sample by adjusting the amplitude */
 static int32_t hdcd_analyze_gen(int32_t sample, unsigned int v, unsigned int 
maxv)
 {
-float sflt = sample, vv = v;
-vv /= maxv;
-if (vv > 1.0) vv = 1.0;
-sflt *= 1.0 + (vv * 18);
-return (int32_t)sflt;
+static const int r = 18, m = 1024;
+int64_t s64 = sample;
+v = m + (v * r * m / maxv);
+return (int32_t)(s64 * v / m);
 }
 
 /** behaves like hdcd_envelope(), but encodes processing information in
-- 
2.7.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 3/5] af_hdcd: fix possible integer overflow

2016-09-05 Thread Burt P
Signed-off-by: Burt P 
---
 libavfilter/af_hdcd.c | 9 -
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index c8bda82..c249589 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -1004,16 +1004,15 @@ AVFILTER_DEFINE_CLASS(hdcd);
 static void hdcd_reset(hdcd_state *state, unsigned rate, unsigned cdt_ms)
 {
 int i;
+uint64_t sustain_reset = cdt_ms * rate / 1000;
 
 state->window = 0;
 state->readahead = 32;
 state->arg = 0;
 state->control = 0;
-
 state->running_gain = 0;
-
+state->sustain_reset = sustain_reset;
 state->sustain = 0;
-state->sustain_reset = cdt_ms*rate/1000;
 
 state->code_counterA = 0;
 state->code_counterA_almost = 0;
@@ -1788,8 +1787,8 @@ static av_cold int init(AVFilterContext *ctx)
 hdcd_reset(&s->state[c], 44100, s->cdt_ms);
 }
 
-av_log(ctx, AV_LOG_VERBOSE, "CDT period: %dms (%d samples @44100Hz)\n",
-s->cdt_ms, s->cdt_ms*44100/1000 );
+av_log(ctx, AV_LOG_VERBOSE, "CDT period: %dms (%u samples @44100Hz)\n",
+s->cdt_ms, s->state[0].sustain_reset );
 av_log(ctx, AV_LOG_VERBOSE, "Process mode: %s\n",
 (s->process_stereo) ? "process stereo channels together" : "process 
each channel separately");
 av_log(ctx, AV_LOG_VERBOSE, "Force PE: %s\n",
-- 
2.7.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/5] af_hdcd: some types renamed to remove _t

2016-09-05 Thread Burt P
Following a suggestion by Diego Biurrun.
_t is reserved for POSIX, apparently.

Signed-off-by: Burt P 
---
 libavfilter/af_hdcd.c | 58 +--
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index 0272305..cde2340 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -872,13 +872,13 @@ typedef struct {
 int count_sustain_expired;
 
 int _ana_snb;   /**< used in the analyze mode tone generator */
-} hdcd_state_t;
+} hdcd_state;
 
 typedef enum {
 HDCD_PE_NEVER= 0, /**< All valid packets have PE set to off */
 HDCD_PE_INTERMITTENT = 1, /**< Some valid packets have PE set to on */
 HDCD_PE_PERMANENT= 2, /**< All valid packets have PE set to on  */
-} hdcd_pe_t;
+} hdcd_pe;
 
 static const char * const pe_str[] = {
 "never enabled",
@@ -890,31 +890,31 @@ typedef enum {
 HDCD_NONE= 0,  /**< HDCD packets do not (yet) appear  */
 HDCD_NO_EFFECT   = 1,  /**< HDCD packets appear, but all control codes 
are NOP */
 HDCD_EFFECTUAL   = 2,  /**< HDCD packets appear, and change the output 
in some way */
-} hdcd_detection_t;
+} hdcd_dv;
 
 typedef enum {
 HDCD_PVER_NONE   = 0, /**< No packets (yet) discovered */
 HDCD_PVER_A  = 1, /**< Packets of type A (8-bit control) 
discovered */
 HDCD_PVER_B  = 2, /**< Packets of type B (8-bit control, 8-bit 
XOR) discovered */
 HDCD_PVER_MIX= 3, /**< Packets of type A and B discovered, most 
likely an encoding error */
-} hdcd_pf_t;
+} hdcd_pf;
 
 static const char * const pf_str[] = {
 "?", "A", "B", "A+B"
 };
 
 typedef struct {
-hdcd_detection_t hdcd_detected;
-hdcd_pf_t packet_type;
+hdcd_dv hdcd_detected;
+hdcd_pf packet_type;
 int total_packets; /**< valid packets */
 int errors;/**< detectable errors */
-hdcd_pe_t peak_extend;
+hdcd_pe peak_extend;
 int uses_transient_filter;
 float max_gain_adjustment; /**< in dB, expected in the range -7.5 to 0.0 */
 int cdt_expirations;   /**< -1 for never set, 0 for set but never 
expired */
 
 int _active_count; /**< used internally */
-} hdcd_detection_data_t;
+} hdcd_detection_data;
 
 typedef enum {
 HDCD_ANA_OFF= 0,
@@ -923,7 +923,7 @@ typedef enum {
 HDCD_ANA_CDT= 3,
 HDCD_ANA_TGM= 4,
 HDCD_ANA_TOP= 5, /**< used in max value of AVOption */
-} hdcd_ana_mode_t;
+} hdcd_ana_mode;
 
 /** analyze mode descriptions: macro for AVOption definitions, array of const 
char for mapping mode to string */
 #define HDCD_ANA_OFF_DESC "disabled"
@@ -941,7 +941,7 @@ static const char * const ana_mode_str[] = {
 
 typedef struct HDCDContext {
 const AVClass *class;
-hdcd_state_t state[HDCD_MAX_CHANNELS];
+hdcd_state state[HDCD_MAX_CHANNELS];
 
 /* AVOption members */
 /** use hdcd_*_stereo() functions to process both channels together.
@@ -975,7 +975,7 @@ typedef struct HDCDContext {
 int val_target_gain;   /**< last matching target_gain in both channels */
 
 /* User information/stats */
-hdcd_detection_data_t detect;
+hdcd_detection_data detect;
 } HDCDContext;
 
 #define OFFSET(x) offsetof(HDCDContext, x)
@@ -1001,7 +1001,7 @@ static const AVOption hdcd_options[] = {
 
 AVFILTER_DEFINE_CLASS(hdcd);
 
-static void hdcd_reset(hdcd_state_t *state, unsigned rate, unsigned cdt_ms)
+static void hdcd_reset(hdcd_state *state, unsigned rate, unsigned cdt_ms)
 {
 int i;
 
@@ -1031,7 +1031,7 @@ static void hdcd_reset(hdcd_state_t *state, unsigned 
rate, unsigned cdt_ms)
 }
 
 /** update the user info/counters */
-static void hdcd_update_info(hdcd_state_t *state)
+static void hdcd_update_info(hdcd_state *state)
 {
 if (state->control & 16) state->count_peak_extend++;
 if (state->control & 32) state->count_transient_filter++;
@@ -1047,9 +1047,9 @@ typedef enum {
 HDCD_CODE_B_CHECKFAIL,
 HDCD_CODE_EXPECT_A,
 HDCD_CODE_EXPECT_B,
-} hdcd_code_result_t;
+} hdcd_code_result;
 
-static hdcd_code_result_t hdcd_code(const uint32_t bits, unsigned char *code)
+static hdcd_code_result hdcd_code(const uint32_t bits, unsigned char *code)
 {
 if ((bits & 0x0fa00500) == 0x0fa00500) {
 /* A: 8-bit code  0x7e0fa005[..] */
@@ -1078,7 +1078,7 @@ static hdcd_code_result_t hdcd_code(const uint32_t bits, 
unsigned char *code)
 return HDCD_CODE_NONE;
 }
 
-static int hdcd_integrate(HDCDContext *ctx, hdcd_state_t *state, int *flag, 
const int32_t *samples, int count, int stride)
+static int hdcd_integrate(HDCDContext *ctx, hdcd_state *state, int *flag, 
const int32_t *samples, int count, int stride)
 {
 uint32_t bits = 0;
 int result = FFMIN(state->readahead, count);
@@ -1213,7 +1213,7 @@ static int hdcd_integrate_stereo(HDCDContext *ctx, int 
*flag, const int32_t *sam
 return result;
 }
 
-static void hdcd_sustain_reset(hdcd_state_t *state

[FFmpeg-devel] [PATCH 4/5] af_hdcd: move decoding setup from init to config_input

2016-09-05 Thread Burt P
Signed-off-by: Burt P 
---
 libavfilter/af_hdcd.c | 40 +---
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index c249589..1487a0b 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -1776,31 +1776,15 @@ static av_cold void uninit(AVFilterContext *ctx)
 static av_cold int init(AVFilterContext *ctx)
 {
 HDCDContext *s = ctx->priv;
-int c;
 
 s->sample_count = 0;
 s->fctx = ctx;
 s->bad_config = 0;
 
-hdcd_detect_reset(&s->detect);
-for (c = 0; c < HDCD_MAX_CHANNELS; c++) {
-hdcd_reset(&s->state[c], 44100, s->cdt_ms);
-}
-
-av_log(ctx, AV_LOG_VERBOSE, "CDT period: %dms (%u samples @44100Hz)\n",
-s->cdt_ms, s->state[0].sustain_reset );
-av_log(ctx, AV_LOG_VERBOSE, "Process mode: %s\n",
-(s->process_stereo) ? "process stereo channels together" : "process 
each channel separately");
-av_log(ctx, AV_LOG_VERBOSE, "Force PE: %s\n",
-(s->force_pe) ? "on" : "off");
-av_log(ctx, AV_LOG_VERBOSE, "Analyze mode: [%d] %s\n",
-s->analyze_mode, ana_mode_str[s->analyze_mode] );
-if (s->disable_autoconvert)
+if (s->disable_autoconvert) {
+av_log(ctx, AV_LOG_VERBOSE, "Disabling automatic format 
conversion.\n");
 avfilter_graph_set_auto_convert(ctx->graph, 
AVFILTER_AUTO_CONVERT_NONE);
-av_log(ctx, AV_LOG_VERBOSE, "Auto-convert: %s (requested: %s)\n",
-(ctx->graph->disable_auto_convert) ? "disabled" : "enabled",
-(s->disable_autoconvert) ? "disable" : "do not disable" );
-
+}
 return 0;
 }
 
@@ -1808,11 +1792,29 @@ static int config_input(AVFilterLink *inlink) {
 AVFilterContext *ctx = inlink->dst;
 HDCDContext *s = ctx->priv;
 AVFilterLink *lk;
+int c;
+
+av_log(ctx, AV_LOG_VERBOSE, "Auto-convert: %s\n",
+(ctx->graph->disable_auto_convert) ? "disabled" : "enabled");
+
+hdcd_detect_reset(&s->detect);
+for (c = 0; c < HDCD_MAX_CHANNELS; c++) {
+hdcd_reset(&s->state[c], inlink->sample_rate, s->cdt_ms);
+}
+av_log(ctx, AV_LOG_VERBOSE, "CDT period: %dms (%u samples @44100Hz)\n",
+s->cdt_ms, s->state[0].sustain_reset );
 
 if (inlink->channels != 2 && s->process_stereo) {
 av_log(ctx, AV_LOG_WARNING, "process_stereo disabled (channels = %d)", 
inlink->channels);
 s->process_stereo = 0;
 }
+av_log(ctx, AV_LOG_VERBOSE, "Process mode: %s\n",
+(s->process_stereo) ? "process stereo channels together" : "process 
each channel separately");
+
+av_log(ctx, AV_LOG_VERBOSE, "Force PE: %s\n",
+(s->force_pe) ? "on" : "off");
+av_log(ctx, AV_LOG_VERBOSE, "Analyze mode: [%d] %s\n",
+s->analyze_mode, ana_mode_str[s->analyze_mode] );
 
 lk = inlink;
 while(lk != NULL) {
-- 
2.7.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 5/5] af_hdcd: tweak hdcd_analyze_prepare() a bit

2016-09-05 Thread Burt P
* use the actual sample rate
* use a more sensible frequency for the tone
* update fate test result

Signed-off-by: Burt P 
---
 libavfilter/af_hdcd.c   | 9 ++---
 tests/fate/filter-audio.mak | 2 +-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index 1487a0b..fde6b7b 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -871,6 +871,7 @@ typedef struct {
  *  a code. -1 for timer never set. */
 int count_sustain_expired;
 
+int rate;   /**< sampling rate */
 int _ana_snb;   /**< used in the analyze mode tone generator */
 } hdcd_state;
 
@@ -1026,6 +1027,7 @@ static void hdcd_reset(hdcd_state *state, unsigned rate, 
unsigned cdt_ms)
 state->max_gain = 0;
 state->count_sustain_expired = -1;
 
+state->rate = rate;
 state->_ana_snb = 0;
 }
 
@@ -1297,7 +1299,8 @@ static int hdcd_scan_stereo(HDCDContext *ctx, const 
int32_t *samples, int max)
 
 /** replace audio with solid tone, but save LSBs */
 static void hdcd_analyze_prepare(hdcd_state *state, int32_t *samples, int 
count, int stride) {
-int n;
+int n, f = 300;
+int so = state->rate / f;
 for (n = 0; n < count * stride; n += stride) {
 /* in analyze mode, the audio is replaced by a solid tone, and
  * amplitude is changed to signal when the specified feature is
@@ -1306,9 +1309,9 @@ static void hdcd_analyze_prepare(hdcd_state *state, 
int32_t *samples, int count,
  * bit 1: Original sample was above PE level */
 int32_t save = (abs(samples[n]) - PEAK_EXT_LEVEL >= 0) ? 2 : 0; /* 
above PE level */
 save |= samples[n] & 1;  /* save LSB for HDCD 
packets */
-samples[n] = TONEGEN16(state->_ana_snb, 277.18, 44100, 0.1);
+samples[n] = TONEGEN16(state->_ana_snb, f, state->rate, 0.1);
 samples[n] = (samples[n] | 3) ^ ((~save) & 3);
-if (++state->_ana_snb > 0x3fff) state->_ana_snb = 0;
+if (++state->_ana_snb > so) state->_ana_snb = 0;
 }
 }
 
diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak
index 2066fa9..cf92ef6 100644
--- a/tests/fate/filter-audio.mak
+++ b/tests/fate/filter-audio.mak
@@ -242,7 +242,7 @@ FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, HDCD, FLAC, 
FLAC, PCM_S24LE, PCM
 fate-filter-hdcd-analyze: SRC = $(TARGET_SAMPLES)/filter/hdcd.flac
 fate-filter-hdcd-analyze: CMD = md5 -i $(SRC) -af hdcd=analyze_mode=pe -f s24le
 fate-filter-hdcd-analyze: CMP = oneline
-fate-filter-hdcd-analyze: REF = 81a4f00f85a585bc0198e9a0670a8cde
+fate-filter-hdcd-analyze: REF = 6e39dc4629c1e84321c0d8bc069b42f6
 
 FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, HDCD, FLAC, FLAC, PCM_S24LE, 
PCM_S24LE) += fate-filter-hdcd-false-positive
 fate-filter-hdcd-false-positive: SRC = 
$(TARGET_SAMPLES)/filter/hdcd-false-positive.flac
-- 
2.7.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 0/5] af_hdcd changes

2016-09-05 Thread Burt P
Hi. Patches follow.

--
Burt

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] order T-shirts

2016-09-05 Thread Thilo Borgmann




> Am 05.09.2016 um 02:35 schrieb Lou Logan :
> 
>> On Sun, Sep 4, 2016, at 01:34 PM, Thomas Volkert wrote:
>> 
>> If you like or don't like this idea, feel free to leave a comment here.
> 
> I know some guys who make shirts. I'll get a quote too.
> 
> Can you provide some images of what the shirts look like?

I like the idea and several people were asking about them. 

Maybe the amount of 25 should be raised a bit to have some stock for next 
year... Even more if  Lou can get us a cheaper price. 

-Thilo
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Hendrik Leppkes
On Mon, Sep 5, 2016 at 12:17 PM, Ronald S. Bultje  wrote:
> It was proposed that we could go one step further and do parsing
> not in the demuxer step (av_read_frame)

Personally, I use avformat demuxing with a bunch of other decoders
which might still need the parser to run first to re-package frames on
proper boundaries, so having the decoders do that instead of the
demuxers sounds like the wrong approach to me.
A demuxer should ideally output fully re-constructed packages, and not
a raw bitstream that still needs re-construction before decoding, at
least IMHO.

- Hendrik
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Paul B Mahol
On 9/5/16, Ronald S. Bultje  wrote:
> Hi,
>
> On Sep 5, 2016 12:05 PM, "Michael Niedermayer" 
> wrote:
>>
>> On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
>> > Hi,
>> >
>> > On Sep 5, 2016 11:18 AM, "Michael Niedermayer" 
>> > wrote:
>> > >
>> > > TODO: version bump, docs
>> > >
>> > > Signed-off-by: Michael Niedermayer 
>> > > ---
>> > >  libavformat/avformat.h  | 8 
>> > >  libavformat/options_table.h | 1 +
>> > >  libavformat/utils.c | 3 +++
>> > >  3 files changed, 12 insertions(+)
>> > >
>> > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>> > > index 3ee7051..33b921a 100644
>> > > --- a/libavformat/avformat.h
>> > > +++ b/libavformat/avformat.h
>> > > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
>> > >   * - decoding: set by user through AVOptions (NO direct access)
>> > >   */
>> > >  char *protocol_blacklist;
>> > > +
>> > > +/**
>> > > + * Force parsing.
>> > > + * - encoding: unused
>> > > + * - decoding: set by user through AVOptions (NO direct access)
>> > > + */
>> > > +int force_parsing;
>> > > +
>> > >  } AVFormatContext;
>> > >
>> > >  int av_format_get_probe_score(const AVFormatContext *s);
>> > > diff --git a/libavformat/options_table.h b/libavformat/options_table.h
>> > > index 3b74d1b..359796c 100644
>> > > --- a/libavformat/options_table.h
>> > > +++ b/libavformat/options_table.h
>> > > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
>> > >  {"format_whitelist", "List of demuxers that are allowed to be used",
>> > OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
>  CHAR_MIN,
>> > CHAR_MAX, D },
>> > >  {"protocol_whitelist", "List of protocols that are allowed to be
> used",
>> > OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
>  CHAR_MIN,
>> > CHAR_MAX, D },
>> > >  {"protocol_blacklist", "List of protocols that are not allowed to be
>> > used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },
>> > CHAR_MIN, CHAR_MAX, D },
>> > > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
>> > AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
>> > >  {NULL},
>> > >  };
>> >
>> > Why int?
>>
>> what else ?
>> a flag doesnt work as AVStreamParseType has more than 1 value
>
> An enum would be nice.
>
>> > At vdd, we discussed parsers, maybe we should sync on that because I
>> > believe it makes this unnecessary.
>>
>> not sure i understand what you suggest ?
>
> Anton expressed interest in merging parsers and bitstream filters. I
> believe they are (other than semantically) identical in goal, and the
> semantic difference is sometimes violated already. If you think of them as
> bitstream filters, we could merge their functionality with auto-insertion
> of BSF. It was proposed that we could go one step further and do parsing
> not in the demuxer step (av_read_frame), but before the decoder (which is a
> change) and in the muxer (which we already do). Auto-insertion mechanisms
> would be shared and this would lead to interesting new features that
> someone demuxing a mpeg system stream or vp9/divx-with-packed-b-frames
> using external tools (which don't split/reframe) but using avcodec decoders
> would still see it work. On the other hand, people using lavf to demux such
> streams would not need to merge (divx/vp9) before muxing, making that
> process more efficient (using lavf) or less buggy (using non-lavf muxers).

Are you telling that using non-lavf muxers is less buggy?
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] dash encoder. Correct generated manifest for MPEG-DASH MPD Validator and calculate current bandwidth for eath chunk. Now works correctly with dash.sj

2016-09-05 Thread Ligverd Haer
Create valide manifest.
Calculate current bandwidth for eath chunk.
Now works correctly with dash.sj
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 519f9c4..06b4e60 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -498,18 +498,15 @@ static int write_manifest(AVFormatContext *s, int final)
 OutputStream *os = &c->streams[0];
 int start_index = FFMAX(os->nb_segments - c->window_size, 0);
 int64_t start_time = av_rescale_q(os->segments[start_index]->time, s->streams[0]->time_base, AV_TIME_BASE_Q);
-avio_printf(out, "\t\n");
 } else {
-avio_printf(out, "\t\n");
+avio_printf(out, "\t\n",final?"":" id=\"0\"");
 }
 
 if (c->has_video) {
-avio_printf(out, "\t\tmax_frame_rate.num && !c->ambiguous_frame_rate)
-avio_printf(out, " %s=\"%d/%d\"", (av_cmp_q(c->min_frame_rate, c->max_frame_rate) < 0) ? "maxFrameRate" : "frameRate", c->max_frame_rate.num, c->max_frame_rate.den);
-avio_printf(out, ">\n");
+avio_printf(out, "\t\t\n");
 
 for (i = 0; i < s->nb_streams; i++) {
 AVStream *st = s->streams[i];
@@ -598,11 +595,15 @@ static int dash_write_header(AVFormatContext *s)
 AVDictionary *opts = NULL;
 char filename[1024];
 
-os->bit_rate = s->streams[i]->codecpar->bit_rate;
+os->bit_rate = s->streams[i]->codecpar->bit_rate ? s->streams[i]->codecpar->bit_rate :  s->bit_rate;
+
 if (os->bit_rate) {
 snprintf(os->bandwidth_str, sizeof(os->bandwidth_str),
  " bandwidth=\"%d\"", os->bit_rate);
 } else {
+snprintf(os->bandwidth_str, sizeof(os->bandwidth_str),
+ " bandwidth=\"%d\"", 0);
+
 int level = s->strict_std_compliance >= FF_COMPLIANCE_STRICT ?
 AV_LOG_ERROR : AV_LOG_WARNING;
 av_log(s, level, "No bit rate set for stream %d\n", i);
@@ -858,6 +859,10 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
 if (ret < 0)
 break;
 }
+
+os->bit_rate = (int)( (float)range_length*8 / ((float)(os->max_pts - os->start_pts) / 1) );
+snprintf(os->bandwidth_str, sizeof(os->bandwidth_str)," bandwidth=\"%i\"", os->bit_rate);
+
 add_segment(os, filename, os->start_pts, os->max_pts - os->start_pts, start_pos, range_length, index_length);
 av_log(s, AV_LOG_VERBOSE, "Representation %d media segment %d written to: %s\n", i, os->segment_index, full_path);
 }
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 06:17:02AM -0400, Ronald S. Bultje wrote:
> Hi,
> 
> On Sep 5, 2016 12:05 PM, "Michael Niedermayer" 
> wrote:
> >
> > On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
> > > Hi,
> > >
> > > On Sep 5, 2016 11:18 AM, "Michael Niedermayer" 
> > > wrote:
> > > >
> > > > TODO: version bump, docs
> > > >
> > > > Signed-off-by: Michael Niedermayer 
> > > > ---
> > > >  libavformat/avformat.h  | 8 
> > > >  libavformat/options_table.h | 1 +
> > > >  libavformat/utils.c | 3 +++
> > > >  3 files changed, 12 insertions(+)
> > > >
> > > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > > > index 3ee7051..33b921a 100644
> > > > --- a/libavformat/avformat.h
> > > > +++ b/libavformat/avformat.h
> > > > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
> > > >   * - decoding: set by user through AVOptions (NO direct access)
> > > >   */
> > > >  char *protocol_blacklist;
> > > > +
> > > > +/**
> > > > + * Force parsing.
> > > > + * - encoding: unused
> > > > + * - decoding: set by user through AVOptions (NO direct access)
> > > > + */
> > > > +int force_parsing;
> > > > +
> > > >  } AVFormatContext;
> > > >
> > > >  int av_format_get_probe_score(const AVFormatContext *s);
> > > > diff --git a/libavformat/options_table.h b/libavformat/options_table.h
> > > > index 3b74d1b..359796c 100644
> > > > --- a/libavformat/options_table.h
> > > > +++ b/libavformat/options_table.h
> > > > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
> > > >  {"format_whitelist", "List of demuxers that are allowed to be used",
> > > OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
>  CHAR_MIN,
> > > CHAR_MAX, D },
> > > >  {"protocol_whitelist", "List of protocols that are allowed to be
> used",
> > > OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
>  CHAR_MIN,
> > > CHAR_MAX, D },
> > > >  {"protocol_blacklist", "List of protocols that are not allowed to be
> > > used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },
> > > CHAR_MIN, CHAR_MAX, D },
> > > > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
> > > AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
> > > >  {NULL},
> > > >  };
> > >
> > > Why int?
> >
> > what else ?
> > a flag doesnt work as AVStreamParseType has more than 1 value
> 
> An enum would be nice.

enums are not guranteed to be stored in a specific data type
2 enums could be stored in different data types, one could be int16
one uint32 one int64
that makes using enums with AVOption difficult. (which is why i
used an int)


> 
> > > At vdd, we discussed parsers, maybe we should sync on that because I
> > > believe it makes this unnecessary.
> >
> > not sure i understand what you suggest ?
> 
> Anton expressed interest in merging parsers and bitstream filters. I
> believe they are (other than semantically) identical in goal, and the
> semantic difference is sometimes violated already. If you think of them as
> bitstream filters, we could merge their functionality with auto-insertion
> of BSF. It was proposed that we could go one step further and do parsing
> not in the demuxer step (av_read_frame), but before the decoder (which is a
> change) and in the muxer (which we already do). Auto-insertion mechanisms
> would be shared and this would lead to interesting new features that
> someone demuxing a mpeg system stream or vp9/divx-with-packed-b-frames
> using external tools (which don't split/reframe) but using avcodec decoders
> would still see it work. On the other hand, people using lavf to demux such
> streams would not need to merge (divx/vp9) before muxing, making that
> process more efficient (using lavf) or less buggy (using non-lavf muxers).

Parsers extract all kinds on information like keyframe flags, frame
types and reorder timestamps and so on.
bitstream filters did at least previously not do anything like that

so they are a bit different. But if someone wants to implement or
merge this iam sure happy and this patch can be dropped.

Though that redesign suggested is probably orders of magnitude more
work than the simple patch i wrote here.
Has it been considered if all the advantages and disadvantages
of the old design vs. the new one (+bugfixing and potential merge bugs)
make it worth the work ?

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Ronald S. Bultje
Hi,

On Sep 5, 2016 12:05 PM, "Michael Niedermayer" 
wrote:
>
> On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
> > Hi,
> >
> > On Sep 5, 2016 11:18 AM, "Michael Niedermayer" 
> > wrote:
> > >
> > > TODO: version bump, docs
> > >
> > > Signed-off-by: Michael Niedermayer 
> > > ---
> > >  libavformat/avformat.h  | 8 
> > >  libavformat/options_table.h | 1 +
> > >  libavformat/utils.c | 3 +++
> > >  3 files changed, 12 insertions(+)
> > >
> > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > > index 3ee7051..33b921a 100644
> > > --- a/libavformat/avformat.h
> > > +++ b/libavformat/avformat.h
> > > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
> > >   * - decoding: set by user through AVOptions (NO direct access)
> > >   */
> > >  char *protocol_blacklist;
> > > +
> > > +/**
> > > + * Force parsing.
> > > + * - encoding: unused
> > > + * - decoding: set by user through AVOptions (NO direct access)
> > > + */
> > > +int force_parsing;
> > > +
> > >  } AVFormatContext;
> > >
> > >  int av_format_get_probe_score(const AVFormatContext *s);
> > > diff --git a/libavformat/options_table.h b/libavformat/options_table.h
> > > index 3b74d1b..359796c 100644
> > > --- a/libavformat/options_table.h
> > > +++ b/libavformat/options_table.h
> > > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
> > >  {"format_whitelist", "List of demuxers that are allowed to be used",
> > OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
 CHAR_MIN,
> > CHAR_MAX, D },
> > >  {"protocol_whitelist", "List of protocols that are allowed to be
used",
> > OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },
 CHAR_MIN,
> > CHAR_MAX, D },
> > >  {"protocol_blacklist", "List of protocols that are not allowed to be
> > used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },
> > CHAR_MIN, CHAR_MAX, D },
> > > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
> > AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
> > >  {NULL},
> > >  };
> >
> > Why int?
>
> what else ?
> a flag doesnt work as AVStreamParseType has more than 1 value

An enum would be nice.

> > At vdd, we discussed parsers, maybe we should sync on that because I
> > believe it makes this unnecessary.
>
> not sure i understand what you suggest ?

Anton expressed interest in merging parsers and bitstream filters. I
believe they are (other than semantically) identical in goal, and the
semantic difference is sometimes violated already. If you think of them as
bitstream filters, we could merge their functionality with auto-insertion
of BSF. It was proposed that we could go one step further and do parsing
not in the demuxer step (av_read_frame), but before the decoder (which is a
change) and in the muxer (which we already do). Auto-insertion mechanisms
would be shared and this would lead to interesting new features that
someone demuxing a mpeg system stream or vp9/divx-with-packed-b-frames
using external tools (which don't split/reframe) but using avcodec decoders
would still see it work. On the other hand, people using lavf to demux such
streams would not need to merge (divx/vp9) before muxing, making that
process more efficient (using lavf) or less buggy (using non-lavf muxers).

(Some people also proposed that maybe reframing - like in mpeg elementary
streams - and splitting/merging - like in packed-divx or vp9 - are perhaps
different enough that they should happen in different places, although I
believe majority agreed it could stay in the same place.)

If you follow this, forceparsing wouldn't be necessary and you could use
existing bitstream CLI options and API to achieve (on the input side) what
parsers do right now.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Michael Niedermayer
On Mon, Sep 05, 2016 at 05:25:14AM -0400, Ronald S. Bultje wrote:
> Hi,
> 
> On Sep 5, 2016 11:18 AM, "Michael Niedermayer" 
> wrote:
> >
> > TODO: version bump, docs
> >
> > Signed-off-by: Michael Niedermayer 
> > ---
> >  libavformat/avformat.h  | 8 
> >  libavformat/options_table.h | 1 +
> >  libavformat/utils.c | 3 +++
> >  3 files changed, 12 insertions(+)
> >
> > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > index 3ee7051..33b921a 100644
> > --- a/libavformat/avformat.h
> > +++ b/libavformat/avformat.h
> > @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
> >   * - decoding: set by user through AVOptions (NO direct access)
> >   */
> >  char *protocol_blacklist;
> > +
> > +/**
> > + * Force parsing.
> > + * - encoding: unused
> > + * - decoding: set by user through AVOptions (NO direct access)
> > + */
> > +int force_parsing;
> > +
> >  } AVFormatContext;
> >
> >  int av_format_get_probe_score(const AVFormatContext *s);
> > diff --git a/libavformat/options_table.h b/libavformat/options_table.h
> > index 3b74d1b..359796c 100644
> > --- a/libavformat/options_table.h
> > +++ b/libavformat/options_table.h
> > @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
> >  {"format_whitelist", "List of demuxers that are allowed to be used",
> OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN,
> CHAR_MAX, D },
> >  {"protocol_whitelist", "List of protocols that are allowed to be used",
> OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN,
> CHAR_MAX, D },
> >  {"protocol_blacklist", "List of protocols that are not allowed to be
> used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },
> CHAR_MIN, CHAR_MAX, D },
> > +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
> AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
> >  {NULL},
> >  };
> 
> Why int?

what else ?
a flag doesnt work as AVStreamParseType has more than 1 value


> 
> At vdd, we discussed parsers, maybe we should sync on that because I
> believe it makes this unnecessary.

not sure i understand what you suggest ?

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Into a blind darkness they enter who follow after the Ignorance,
they as if into a greater darkness enter who devote themselves
to the Knowledge alone. -- Isha Upanishad


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH v3] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Timo Rothenpieler
---
 libswscale/swscale_unscaled.c| 57 
 tests/ref/fate/filter-pixdesc-p010le |  2 +-
 tests/ref/fate/filter-pixfmts-copy   |  2 +-
 tests/ref/fate/filter-pixfmts-crop   |  2 +-
 tests/ref/fate/filter-pixfmts-field  |  2 +-
 tests/ref/fate/filter-pixfmts-hflip  |  2 +-
 tests/ref/fate/filter-pixfmts-il |  2 +-
 tests/ref/fate/filter-pixfmts-null   |  2 +-
 tests/ref/fate/filter-pixfmts-scale  |  2 +-
 tests/ref/fate/filter-pixfmts-vflip  |  2 +-
 10 files changed, 66 insertions(+), 9 deletions(-)

diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 716c386..e46763c 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -33,6 +33,7 @@
 #include "libavutil/bswap.h"
 #include "libavutil/pixdesc.h"
 #include "libavutil/avassert.h"
+#include "libavutil/avconfig.h"
 
 DECLARE_ALIGNED(8, static const uint8_t, dithers)[8][8][8]={
 {
@@ -236,6 +237,57 @@ static int planarToP010Wrapper(SwsContext *c, const 
uint8_t *src8[],
 return srcSliceH;
 }
 
+#if AV_HAVE_BIGENDIAN
+#define output_pixel(p, v) do { \
+uint16_t *pp = (p); \
+AV_WL16(pp, (v)); \
+} while(0)
+#else
+#define output_pixel(p, v) (*p) = (v)
+#endif
+
+static int planar8ToP01xleWrapper(SwsContext *c, const uint8_t *src[],
+  int srcStride[], int srcSliceY,
+  int srcSliceH, uint8_t *dstParam8[],
+  int dstStride[])
+{
+uint16_t *dstY = (uint16_t*)(dstParam8[0] + dstStride[0] * srcSliceY);
+uint16_t *dstUV = (uint16_t*)(dstParam8[1] + dstStride[1] * srcSliceY / 2);
+int x, y, t;
+
+av_assert0(!(dstStride[0] % 2 || dstStride[1] % 2));
+
+for (y = 0; y < srcSliceH; y++) {
+uint16_t *tdstY = dstY;
+const uint8_t *tsrc0 = src[0];
+for (x = c->srcW; x > 0; x--) {
+t = *tsrc0++;
+output_pixel(tdstY++, t | (t << 8));
+}
+src[0] += srcStride[0];
+dstY += dstStride[0] / 2;
+
+if (!(y & 1)) {
+uint16_t *tdstUV = dstUV;
+const uint8_t *tsrc1 = src[1];
+const uint8_t *tsrc2 = src[2];
+for (x = c->srcW / 2; x > 0; x--) {
+t = *tsrc1++;
+output_pixel(tdstUV++, t | (t << 8));
+t = *tsrc2++;
+output_pixel(tdstUV++, t | (t << 8));
+}
+src[1] += srcStride[1];
+src[2] += srcStride[2];
+dstUV += dstStride[1] / 2;
+}
+}
+
+return srcSliceH;
+}
+
+#undef output_pixel
+
 static int planarToYuy2Wrapper(SwsContext *c, const uint8_t *src[],
int srcStride[], int srcSliceY, int srcSliceH,
uint8_t *dstParam[], int dstStride[])
@@ -1653,6 +1705,11 @@ void ff_get_unscaled_swscale(SwsContext *c)
 dstFormat == AV_PIX_FMT_P010) {
 c->swscale = planarToP010Wrapper;
 }
+/* yuv420p_to_p010le */
+if ((srcFormat == AV_PIX_FMT_YUV420P || srcFormat == AV_PIX_FMT_YUVA420P) 
&&
+dstFormat == AV_PIX_FMT_P010LE) {
+c->swscale = planar8ToP01xleWrapper;
+}
 
 if (srcFormat == AV_PIX_FMT_YUV410P && !(dstH & 3) &&
 (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) 
&&
diff --git a/tests/ref/fate/filter-pixdesc-p010le 
b/tests/ref/fate/filter-pixdesc-p010le
index cac2635..2500604 100644
--- a/tests/ref/fate/filter-pixdesc-p010le
+++ b/tests/ref/fate/filter-pixdesc-p010le
@@ -1 +1 @@
-pixdesc-p010le  0268fd44f63022e21ada69704534fc85
+pixdesc-p010le  7b4a503997eb4e14cba80ee52db85e39
diff --git a/tests/ref/fate/filter-pixfmts-copy 
b/tests/ref/fate/filter-pixfmts-copy
index ce957f7..f19dcb0 100644
--- a/tests/ref/fate/filter-pixfmts-copy
+++ b/tests/ref/fate/filter-pixfmts-copy
@@ -36,7 +36,7 @@ monow   54d16d2c01abfd72ecdb5e51e283937c
 nv128e24feb2c544dc26a20047a71e4c27aa
 nv21335d85c9af6110f26ae9e187a82ed2cf
 p010be  7f9842d6015026136bad60d03c035cc3
-p010le  1929db89609c4b8c6d9c9030a9e7843d
+p010le  c453421b9f726bdaf2bacf59a492c43b
 pal8ff5929f5b42075793b2c34cb441bede5
 rgb00de71e5a1f97f81fb51397a0435bfa72
 rgb24   f4438057d046e6d98ade4e45294b21be
diff --git a/tests/ref/fate/filter-pixfmts-crop 
b/tests/ref/fate/filter-pixfmts-crop
index e2c77a8..86b3f02 100644
--- a/tests/ref/fate/filter-pixfmts-crop
+++ b/tests/ref/fate/filter-pixfmts-crop
@@ -34,7 +34,7 @@ gray16le9ff7c866bd98def4e6c91542c1c45f80
 nv1292cda427f794374731ec0321ee00caac
 nv211bcfc197f4fb95de85ba58182d8d2f69
 p010be  8b2de2eb6b099bbf355bfc55a0694ddc
-p010le  a1e4f713e145dfc465bfe0cc77096a03
+p010le  373b50c766dfd0a8e79c9a73246d803a
 pal81f2cdc8e718f95c875dbc1034a688bfb
 rgb0 

Re: [FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Ronald S. Bultje
Hi,

On Sep 5, 2016 11:18 AM, "Michael Niedermayer" 
wrote:
>
> TODO: version bump, docs
>
> Signed-off-by: Michael Niedermayer 
> ---
>  libavformat/avformat.h  | 8 
>  libavformat/options_table.h | 1 +
>  libavformat/utils.c | 3 +++
>  3 files changed, 12 insertions(+)
>
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 3ee7051..33b921a 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
>   * - decoding: set by user through AVOptions (NO direct access)
>   */
>  char *protocol_blacklist;
> +
> +/**
> + * Force parsing.
> + * - encoding: unused
> + * - decoding: set by user through AVOptions (NO direct access)
> + */
> +int force_parsing;
> +
>  } AVFormatContext;
>
>  int av_format_get_probe_score(const AVFormatContext *s);
> diff --git a/libavformat/options_table.h b/libavformat/options_table.h
> index 3b74d1b..359796c 100644
> --- a/libavformat/options_table.h
> +++ b/libavformat/options_table.h
> @@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
>  {"format_whitelist", "List of demuxers that are allowed to be used",
OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN,
CHAR_MAX, D },
>  {"protocol_whitelist", "List of protocols that are allowed to be used",
OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN,
CHAR_MAX, D },
>  {"protocol_blacklist", "List of protocols that are not allowed to be
used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },
CHAR_MIN, CHAR_MAX, D },
> +{"forceparsing", "force use of AVParsers", OFFSET(force_parsing),
AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
>  {NULL},
>  };

Why int?

At vdd, we discussed parsers, maybe we should sync on that because I
believe it makes this unnecessary.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avformat: Allow forcing use of AVParsers

2016-09-05 Thread Michael Niedermayer
TODO: version bump, docs

Signed-off-by: Michael Niedermayer 
---
 libavformat/avformat.h  | 8 
 libavformat/options_table.h | 1 +
 libavformat/utils.c | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 3ee7051..33b921a 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1886,6 +1886,14 @@ typedef struct AVFormatContext {
  * - decoding: set by user through AVOptions (NO direct access)
  */
 char *protocol_blacklist;
+
+/**
+ * Force parsing.
+ * - encoding: unused
+ * - decoding: set by user through AVOptions (NO direct access)
+ */
+int force_parsing;
+
 } AVFormatContext;
 
 int av_format_get_probe_score(const AVFormatContext *s);
diff --git a/libavformat/options_table.h b/libavformat/options_table.h
index 3b74d1b..359796c 100644
--- a/libavformat/options_table.h
+++ b/libavformat/options_table.h
@@ -103,6 +103,7 @@ static const AVOption avformat_options[] = {
 {"format_whitelist", "List of demuxers that are allowed to be used", 
OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN, 
CHAR_MAX, D },
 {"protocol_whitelist", "List of protocols that are allowed to be used", 
OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN, 
CHAR_MAX, D },
 {"protocol_blacklist", "List of protocols that are not allowed to be used", 
OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN, 
CHAR_MAX, D },
+{"forceparsing", "force use of AVParsers", OFFSET(force_parsing), 
AV_OPT_TYPE_INT, { .i64 = -1 },  -1, AVSTREAM_PARSE_FULL_ONCE, D },
 {NULL},
 };
 
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7d23c4a..a692e65 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4197,6 +4197,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
  * timestamps have their first few packets buffered and the
  * timestamps corrected before they are returned to the user */
 st->cur_dts = RELATIVE_TS_BASE;
+
+if (s->force_parsing >= 0)
+st->need_parsing = s->force_parsing;
 } else {
 st->cur_dts = AV_NOPTS_VALUE;
 }
-- 
2.9.3

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH]lavc/pnmdec: Do not fail by default for truncated pbm files

2016-09-05 Thread Carl Eugen Hoyos
2016-09-05 10:26 GMT+02:00 Paul B Mahol :
> On 9/5/16, Carl Eugen Hoyos  wrote:

>> New patch attached.
>
> It seems this patch disables check for all cases when experimental is enabled,
> but check for overflow in only one case.

I am not sure I understand:
Do you mean I missed a case where an overflow is now (after the patch)
possible (but wasn't before) or do you mean there are formats after the
patch that allow truncation and formats that do not allow it?

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Carl Eugen Hoyos
2016-09-05 11:06 GMT+02:00 Ali KIZIL :
> 2016-09-05 12:04 GMT+03:00 Carl Eugen Hoyos :
>
>> 2016-09-05 10:53 GMT+02:00 Ali KIZIL :
>>
>> > Is there any obstacle to release this patch ?
>>
>> Which patch?
>
> Sorry Carl, maybe I missed. I mean the patch for "add unscaled
> conversion from yuv420p to p010".

Everybody who commented since yesterday afternoon agrees that the
patch should be changed (slightly). So yes, there still is an obstacle.

Please cut your quotes and please give every OP more than a few
hours to resend.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Carl Eugen Hoyos
2016-09-03 15:25 GMT+02:00 Timo Rothenpieler :

> +static int planar8ToP010leWrapper

If you want, you can rename this function to planar8ToP01xleWrapper
or planar8ToP016leWrapper after removing the binary and.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Ali KIZIL
2016-09-05 12:04 GMT+03:00 Carl Eugen Hoyos :

> 2016-09-05 10:53 GMT+02:00 Ali KIZIL :
>
> > Is there any obstacle to release this patch ?
>
> Which patch?
>
> Carl Eugen
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Sorry Carl, maybe I missed. I mean the patch for "add unscaled conversion
from yuv420p to p010".
I see the one "add unscaled conversion from yuv420p10 to p010" in github,
but I can not see the one "add unscaled conversion from yuv420p to p010".
Lastly it was confirmed that padding zeros were not needed.

Kind Regards,
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Carl Eugen Hoyos
2016-09-05 10:53 GMT+02:00 Ali KIZIL :

> Is there any obstacle to release this patch ?

Which patch?

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v2] swscale: add unscaled conversion from yuv420p to p010

2016-09-05 Thread Ali KIZIL
2016-09-04 20:34 GMT+03:00 Ronald S. Bultje :

> Hi,
>
> On Sep 4, 2016 5:42 PM, "Timo Rothenpieler"  wrote:
> >
> > On 9/4/2016 4:06 PM, Carl Eugen Hoyos wrote:
> > > 2016-09-04 16:02 GMT+02:00 Timo Rothenpieler :
> > >> The purpose of this patch is to make conversion from
> > >> yuv420p (8 bit) to p010 (10 bit) fast.
> > >
> > > Do I understand you correctly that your patch is
> > > faster without the change I suggested?
> >
> > With the &:
> > [bench @ 0x600045b80] t:0.011178 avg:0.011172 max:0.018297 min:0.010505
> >
> > Without it:
> > [bench @ 0x600045b80] t:0.008455 avg:0.008517 max:0.015815 min:0.007941
> >
> > So it is quite a bit faster.
> >
> > Tested with nvenc hevc10 encoding, and the output is visually identical,
> > and the file size is also exactly the same.
> > So it seems to cleanly ignore the unused bits.
> >
> > Also, given that at least microsoft argues with upcasting to 16 bit, the
> > approach without zeroing the lsb would be more accurate, as
> >
> > t << 8 | t
> >
> > is how one would convert 8 bit to 16 bit.
> >
> >
> > So I'd say going with the faster approach here should be fine.
> > If at some point someone runs into something that chokes on the bits
> > being non-zero, which I think is highly unlikely, it can be changed back.
>
> Sounds good, thanks for testing and confirming.
>
> Ronald
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Hello,

Is there any obstacle to release this patch ?
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH]lavc/pnmdec: Do not fail by default for truncated pbm files

2016-09-05 Thread Paul B Mahol
On 9/5/16, Carl Eugen Hoyos  wrote:
> 2016-09-05 9:21 GMT+02:00 Michael Niedermayer :
>> On Sun, Sep 04, 2016 at 08:58:44PM +0200, Carl Eugen Hoyos wrote:
>
>>> @@ -159,6 +163,8 @@ static int pnm_decode_frame(AVCodecContext *avctx,
>>> void *data,
>>>  }
>>>  }else{
>>>  for (i = 0; i < avctx->height; i++) {
>>> +if (s->bytestream + n > s->bytestream_end)
>>> +continue;
>>
>> having a pointer point outside of 0..array length is undefined
>> behaviour (and can overflow in principle)
>
>
> New patch attached.

It seems this patch disables check for all cases when experimental is enabled,
but check for overflow in only one case.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH]lavc/pnmdec: Do not fail by default for truncated pbm files

2016-09-05 Thread Carl Eugen Hoyos
2016-09-05 9:21 GMT+02:00 Michael Niedermayer :
> On Sun, Sep 04, 2016 at 08:58:44PM +0200, Carl Eugen Hoyos wrote:

>> @@ -159,6 +163,8 @@ static int pnm_decode_frame(AVCodecContext *avctx, void 
>> *data,
>>  }
>>  }else{
>>  for (i = 0; i < avctx->height; i++) {
>> +if (s->bytestream + n > s->bytestream_end)
>> +continue;
>
> having a pointer point outside of 0..array length is undefined
> behaviour (and can overflow in principle)


New patch attached.

Thank you, Carl Eugen
From af00c56b38b28e07bbba46031472da41300a8cf1 Mon Sep 17 00:00:00 2001
From: Carl Eugen Hoyos 
Date: Sun, 4 Sep 2016 20:52:28 +0200
Subject: [PATCH] lavc/pnmdec: Do not fail by default for truncated pbm
 files.

Fixes ticket #5795.
---
 libavcodec/pnmdec.c |   10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c
index d4261a4..0b7a0f6 100644
--- a/libavcodec/pnmdec.c
+++ b/libavcodec/pnmdec.c
@@ -124,8 +124,12 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
 do_read:
 ptr  = p->data[0];
 linesize = p->linesize[0];
-if (n * avctx->height > s->bytestream_end - s->bytestream)
-return AVERROR_INVALIDDATA;
+if (n * avctx->height > s->bytestream_end - s->bytestream) {
+av_log(avctx, AV_LOG_ERROR,
+   "Invalid truncated file\n");
+if (avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT)
+return AVERROR_INVALIDDATA;
+}
 if(s->type < 4 || (is_mono && s->type==7)){
 for (i=0; iheight; i++) {
 PutBitContext pb;
@@ -159,6 +163,8 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
 }
 }else{
 for (i = 0; i < avctx->height; i++) {
+if (s->bytestream > s->bytestream_end - n)
+continue;
 if (!upgrade)
 samplecpy(ptr, s->bytestream, n, s->maxval);
 else if (upgrade == 1) {
-- 
1.7.10.4

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH]lavc/avpacket: Fix undefined behaviour, do not pass null pointer to memcpy()

2016-09-05 Thread Carl Eugen Hoyos
2016-09-04 22:43 GMT+02:00 Michael Niedermayer :
> On Sun, Sep 04, 2016 at 09:15:47PM +0200, Carl Eugen Hoyos wrote:

>> Fixes ticket #5128.
>> ---
>>  libavcodec/avpacket.c |3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> LGTM

Patch applied.

Thank you, Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] MAINTAINERS: Replace AvxSynth Team by Stephen Hutchinson for avisynth.c

2016-09-05 Thread Michael Niedermayer
On Wed, Aug 31, 2016 at 10:45:20PM +0200, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  MAINTAINERS | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

applied

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH]lavc/pnmdec: Do not fail by default for truncated pbm files

2016-09-05 Thread Michael Niedermayer
On Sun, Sep 04, 2016 at 08:58:44PM +0200, Carl Eugen Hoyos wrote:
> Hi!
> 
> Some scanner - scannersoftware combination (HP_Officejet_Pro_X476dn_MFP 
> - sane) truncates trailing zeros in pbm files and FreeImage (a library 
> used in free and proprietary image software) reads such files.
> Attached patch copies this behaviour and fixes ticket #5795.
> 
> Please comment, Carl Eugen

>  pnmdec.c |   10 --
>  1 file changed, 8 insertions(+), 2 deletions(-)
> fd31d6d029cade2e5eb2f2a705067cdaa2ab02d5  
> 0001-lavc-pnmdec-Do-not-abort-by-default-for-truncated-pb.patch
> From af00c56b38b28e07bbba46031472da41300a8cf1 Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos 
> Date: Sun, 4 Sep 2016 20:52:28 +0200
> Subject: [PATCH] lavc/pnmdec: Do not abort by default for truncated pbm
>  files.
> 
> Fixes ticket #5795.
> ---
>  libavcodec/pnmdec.c |   10 --
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c
> index d4261a4..0b7a0f6 100644
> --- a/libavcodec/pnmdec.c
> +++ b/libavcodec/pnmdec.c
> @@ -124,8 +124,12 @@ static int pnm_decode_frame(AVCodecContext *avctx, void 
> *data,
>  do_read:
>  ptr  = p->data[0];
>  linesize = p->linesize[0];
> -if (s->bytestream + n * avctx->height > s->bytestream_end)
> -return AVERROR_INVALIDDATA;
> +if (s->bytestream + n * avctx->height > s->bytestream_end) {
> +av_log(avctx, AV_LOG_ERROR,
> +   "Invalid truncated file\n");
> +if (avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT)
> +return AVERROR_INVALIDDATA;
> +}
>  if(s->type < 4 || (is_mono && s->type==7)){
>  for (i=0; iheight; i++) {
>  PutBitContext pb;

> @@ -159,6 +163,8 @@ static int pnm_decode_frame(AVCodecContext *avctx, void 
> *data,
>  }
>  }else{
>  for (i = 0; i < avctx->height; i++) {
> +if (s->bytestream + n > s->bytestream_end)
> +continue;

having a pointer point outside of 0..array length is undefined
behaviour (and can overflow in principle)


[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who would give up essential Liberty, to purchase a little
temporary Safety, deserve neither Liberty nor Safety -- Benjamin Franklin


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/hlsenc: fix incomplete write of subtitle HLS playlist

2016-09-05 Thread Michael Niedermayer
On Fri, Sep 02, 2016 at 08:20:21PM +0100, Franklin Phillips wrote:
> This patch is a fix for the bug with ticket number 5812
> (https://trac.ffmpeg.org/ticket/5812).
> 
> Basically, the bug is that the last segment and the "#EXT-X-ENDLIST"
> tag are not being written to the subtitle playlist file when
> converting a file with subtitles to the HLS format. The reason for
> this seem to be that the filename for the subtitle file is being freed
> too early. This solution is simply to free that memory after it's last
> use in the "hls_window" function.
> 
> Signed-off-by: Franklin Phillips 
> ---
>  libavformat/hlsenc.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

applied

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many things microsoft did are stupid, but not doing something just because
microsoft did it is even more stupid. If everything ms did were stupid they
would be bankrupt already.


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel