Re: [FFmpeg-devel] [PATCH 3/6] aacenc: Move local encoder specific tables to a separate file

2015-08-07 Thread Claudio Freire
On Wed, Jul 29, 2015 at 1:44 AM, Rostislav Pehlivanov
 wrote:
> This commit moves any tables specific to the encoder from aacenc
> and aaccoder to a separate file called 'aacenctab.c/.h'.
> This was done as a clean up attempt as the encoder was filled with
> tables pasted in between functions which made it confusing to follow
> and track where each table and definition had been used.
> This commit solves this by simply exporting the smaller tables out to
> the aacenctab.h while the larger ones are compiled using aacenctab.c
> and are referenced from the header file.
> ---


Applied.

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


Re: [FFmpeg-devel] [PATCH 4/4] fate reference for samidec

2015-08-07 Thread Michael Niedermayer
On Thu, Aug 06, 2015 at 11:50:56PM -0700, Yayoi Ukai wrote:
> The (attached) file is a sample for this reference.

uploaded to fate suite

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Awnsering whenever a program halts or runs forever is
On a turing machine, in general impossible (turings halting problem).
On any real computer, always possible as a real computer has a finite number
of states N, and will either halt in less than N cycles or never halt.


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


[FFmpeg-devel] [PATCH] avcodec: use looking up crop table method when do clip

2015-08-07 Thread 周晓勇
based on last h264qpel optimization patch i have pushed
do i need separate this patch to double? cause one file to change loongson arch
use looking up crop table method may boost up decode on loongson, and with this 
patch x86 pass fate too
but i have not tested on other arch


test on loongson-3b
time ./ffmepg -i 1280x720.mp4 -f rawvideo -an -vframes 4096 -y /dev/null


no patch:


real 0m58.2s
user 4m59.1s
sys 0m5.8s


with patch:


real 0m53.9s
user 4m33.2s
sys 0m6.2s


---
From 68e88b17d113875d829a9936284d3551fd499139 Mon Sep 17 00:00:00 2001
From: ZhouXiaoyong 
Date: Fri, 7 Aug 2015 16:33:10 +0800
Subject: [PATCH] avcodec: use looking up crop table method when do clip


Signed-off-by: ZhouXiaoyong 
---
 libavcodec/bit_depth_template.c | 4 ++--
 libavcodec/mips/h264qpel_mmi.c  | 4 
 2 files changed, 6 insertions(+), 2 deletions(-)


diff --git a/libavcodec/bit_depth_template.c b/libavcodec/bit_depth_template.c
index 8018489..759cd30 100644
--- a/libavcodec/bit_depth_template.c
+++ b/libavcodec/bit_depth_template.c
@@ -72,7 +72,7 @@
 #   define pixel4 uint32_t
 #   define dctcoef int16_t
 
-#   define INIT_CLIP
+#   define INIT_CLIP const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
 #   define no_rnd_avg_pixel4 no_rnd_avg32
 #   definernd_avg_pixel4rnd_avg32
 #   define AV_RN2P  AV_RN16
@@ -84,7 +84,7 @@
 #   define PIXEL_SPLAT_X4(x) ((x)*0x01010101U)
 
 #   define av_clip_pixel(a) av_clip_uint8(a)
-#   define CLIP(a) av_clip_uint8(a)
+#   define CLIP(a) cm[a]
 #endif
 
 #define FUNC3(a, b, c)  a ## _ ## b ## c
diff --git a/libavcodec/mips/h264qpel_mmi.c b/libavcodec/mips/h264qpel_mmi.c
index e04a2d5..ebb21c7 100644
--- a/libavcodec/mips/h264qpel_mmi.c
+++ b/libavcodec/mips/h264qpel_mmi.c
@@ -1308,6 +1308,7 @@ static void avg_h264_qpel16_v_lowpass_mmi(uint8_t *dst, 
const uint8_t *src,
 static void put_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
 int dstStride, int srcStride)
 {
+INIT_CLIP
 int i;
 int16_t _tmp[36];
 int16_t *tmp = _tmp;
@@ -1376,6 +1377,7 @@ static void put_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, 
const uint8_t *src,
 static void put_h264_qpel8_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
 int dstStride, int srcStride)
 {
+INIT_CLIP
 int16_t _tmp[104];
 int16_t *tmp = _tmp;
 int i;
@@ -1479,6 +1481,7 @@ static void put_h264_qpel16_hv_lowpass_mmi(uint8_t *dst, 
const uint8_t *src,
 static void avg_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
 int dstStride, int srcStride)
 {
+INIT_CLIP
 int i;
 int16_t _tmp[36];
 int16_t *tmp = _tmp;
@@ -1549,6 +1552,7 @@ static void avg_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, 
const uint8_t *src,
 static void avg_h264_qpel8_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
 int dstStride, int srcStride)
 {
+INIT_CLIP
 int16_t _tmp[104];
 int16_t *tmp = _tmp;
 int i;
-- 
2.1.0

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


[FFmpeg-devel] Problem Still Exists on avcodec/vdpau_hevc: Remove experimental flag

2015-08-07 Thread Ali KIZIL
Hello,

I wanted to inform interleaving problem still exisits even with Nvidia 
355.06 driver. More info here:

https://github.com/FFmpeg/FFmpeg/commit/aa10f0aab0e2729e0a5edbd7b6838658d6
3421e1

Kind Regards,
Ali

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


Re: [FFmpeg-devel] [PATCH] swscale: Implement alphablendaway for planar 4:4:4 formats

2015-08-07 Thread Michael Niedermayer
On Thu, Aug 06, 2015 at 10:24:52PM -0400, Ronald S. Bultje wrote:
> Hi,
> 
> On Thu, Aug 6, 2015 at 4:27 PM, Michael Niedermayer 
> wrote:
> 
> > From: Michael Niedermayer 
> >
> > Fixes Ticket4746
> >
> > TODO: implement packed formats and subsampled formats
> >
> > Signed-off-by: Michael Niedermayer 
> > ---
> >  doc/scaler.texi   |   13 ++
> >  libswscale/Makefile   |3 +-
> >  libswscale/alphablend.c   |   55 +++
> >  libswscale/options.c  |3 ++
> >  libswscale/swscale_internal.h |   12 +
> >  libswscale/utils.c|   97
> > +
> >  6 files changed, 182 insertions(+), 1 deletion(-)
> >  create mode 100644 libswscale/alphablend.c
> >
> > diff --git a/doc/scaler.texi b/doc/scaler.texi
> > index 23d6393..4c55334 100644
> > --- a/doc/scaler.texi
> > +++ b/doc/scaler.texi
> > @@ -122,6 +122,19 @@ a_dither).
> >
> >  @end table
> >
> > +@item alphablend
> > +Set the alpha blending to use when the input has alpha but the output
> > does not.
> > +Default value is @samp{black}.
> > +
> > +@table @samp
> > +@item black
> > +Blend onto black
> > +
> > +@item none
> > +No blending
> > +
> > +@end table
> > +
> >  @end table
> 
> 
> I must admit I'm not a fan of having just two values for something like
> this. It seems to me you want 2 options, "blendmode", being "none" or
> "background" (or a float/alpha between 1.0/0.0), and the actual background
> color (black, white, blue, r=a,g=b,c=d). "black" vs. "none" seems like a
> future compat nightmare. Is it that hard to implement a proper rgb/yuv
> value solution?

The color value convertion support is in drawutils which is in
libavfilter. also drawutils lacks support for >8bit formats
so to get arbitrary color support with a clean non duplicated
implementation it would require moving drawutils
or the color related code from it to libavutil and extending it to
support all pixel formats. Unless iam missing something

Also i wanted to implement support for a checkerboard background
(which some applications use as default and it shows what
is transparent much better than black would)

So i would suggest that we implement ATM a "none" + "solidcolor" or
"background" or what name is preferred
and ill add a black/white checkerboard mode later and once drawutils
exist in libavutil we can then easily add a "blendcolor" AVOption
to specify the exact color

If noone objects then ill work on that (except drawutils moving and
extending)

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

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin


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


[FFmpeg-devel] [PATCH v7] Add support for Audible AA files

2015-08-07 Thread Vesselin Bontchev
From 0568a9385aa024ff015adab1c8f085de73edc644 Mon Sep 17 00:00:00 2001
From: Vesselin Bontchev 
Date: Sun, 19 Jul 2015 23:16:36 +0200
Subject: [PATCH] Add support for Audible AA files

https://en.wikipedia.org/wiki/Audible.com#Quality
---
 doc/demuxers.texi|   6 +
 doc/general.texi |   2 +
 libavformat/Makefile |   1 +
 libavformat/aadec.c  | 305 +++
 libavformat/allformats.c |   1 +
 5 files changed, 315 insertions(+)
 create mode 100644 libavformat/aadec.c

diff --git a/doc/demuxers.texi b/doc/demuxers.texi
index e45e1af..c86e8a4 100644
--- a/doc/demuxers.texi
+++ b/doc/demuxers.texi
@@ -18,6 +18,12 @@ enabled demuxers.
 
 The description of some of the currently available demuxers follows.
 
+@section aa
+
+Audible Format 2, 3, and 4 demuxer.
+
+This demuxer is used to demux Audible Format 2, 3, and 4 (.aa) files.
+
 @section applehttp
 
 Apple HTTP Live Streaming demuxer.
diff --git a/doc/general.texi b/doc/general.texi
index a260e79..2b782e0 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -228,6 +228,8 @@ library:
 @item 8088flex TMV  @tab   @tab X
 @item AAX   @tab   @tab X
 @tab Audible Enhanced Audio format, used in audiobooks.
+@item AA@tab   @tab X
+@tab Audible Format 2, 3, and 4, used in audiobooks.
 @item ACT Voice @tab   @tab X
 @tab contains G.729 audio
 @item Adobe Filmstrip   @tab X @tab X
diff --git a/libavformat/Makefile b/libavformat/Makefile
index cc73fd8..466da51 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -59,6 +59,7 @@ OBJS-$(CONFIG_SHARED)+= log2_tab.o golomb_tab.o
 
 # muxers/demuxers
 OBJS-$(CONFIG_A64_MUXER) += a64.o rawenc.o
+OBJS-$(CONFIG_AA_DEMUXER)+= aadec.o
 OBJS-$(CONFIG_AAC_DEMUXER)   += aacdec.o apetag.o img2.o rawdec.o
 OBJS-$(CONFIG_AC3_DEMUXER)   += ac3dec.o rawdec.o
 OBJS-$(CONFIG_AC3_MUXER) += rawenc.o
diff --git a/libavformat/aadec.c b/libavformat/aadec.c
new file mode 100644
index 000..e336283
--- /dev/null
+++ b/libavformat/aadec.c
@@ -0,0 +1,305 @@
+/*
+ * Audible AA demuxer
+ * Copyright (c) 2015 Vesselin Bontchev
+ *
+ * Header parsing is borrowed from https://github.com/jteeuwen/audible project.
+ * Copyright (c) 2001-2014, Jim Teeuwen
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *list of conditions and the following disclaimer.
+ *
+ * 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 OR CONTRIBUTORS 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 "avformat.h"
+#include "internal.h"
+#include "libavutil/intreadwrite.h"
+#include "libavutil/tea.h"
+#include "libavutil/opt.h"
+
+#define AA_MAGIC 1469084982 /* this identifies an audible .aa file */
+#define MAX_CODEC_SECOND_SIZE 3982
+#define MAX_TOC_ENTRIES 16
+#define MAX_DICTIONARY_ENTRIES 128
+#define TEA_BLOCK_SIZE 8
+
+typedef struct AADemuxContext {
+AVClass *class;
+uint8_t *aa_fixed_key;
+int aa_fixed_key_len;
+int32_t codec_second_size;
+struct AVTEA *tea_ctx;
+uint8_t file_key[16];
+int64_t current_chapter_size;
+int64_t current_codec_second_size;
+int chapter_idx;
+} AADemuxContext;
+
+static int32_t get_second_size(char *codec_name)
+{
+int32_t result = -1;
+
+if (!strcmp(codec_name, "mp332")) {
+result = 3982;
+} else if (!strcmp(codec_name, "acelp16")) {
+result = 2000;
+} else if (!strcmp(codec_name, "acelp85")) {
+result = 1045;
+}
+
+return result;
+}
+
+static int aa_read_header(AVFormatContext *s)
+{
+int i, j, idx, largest_idx = -1;
+uint32_t nkey, nval, toc_size, npairs, header_seed, start;
+char key[128], val[128], codec_name[64] = {0};
+uint8_t output[24], dst[8], src[8];
+int64_t largest_size = -1, current_size = -1;
+struct toc_entry {
+uint32_t offset;
+uint32_t size;
+} TOC[MAX_TOC_ENTRIES];
+union {
+uint8_t key[16];
+uint32_t part[4];
+} header_key;
+AADemuxContext *c =

Re: [FFmpeg-devel] [libav-devel] [PATCH 0/20] removal of deprecated features

2015-08-07 Thread wm4
On Thu, 6 Aug 2015 23:26:05 +0200
Andreas Cadhalpun  wrote:

> On 06.08.2015 00:53, wm4 wrote:
> > Well, you sure like to list a lot of projects.
> 
> No, I don't. I'd like it much more if the list was empty.
> 
> > But what you don't say
> > is that many of these are either definitely dead (mplayer2 comes to
> > mind),
> 
> One is not many. But OK, let's get rid of mplayer2 [1].

So why does mplayer2 have to die, but other projects are extremely
important to keep and thus no deprecated API should be dropped?

I didn't attempt to check how many projects really rely on deprecated
features, but...

> > or are ancient releases of software which fixed their API usage
> > later (like my own project, and probably most other reasonable active
> > projects).
> 
> Now I'm curious what your own project is.
> I thought you were involved with mpv, but that still uses the deprecated
> FF_API_AUDIOCONVERT [2].

It is mpv. Yes, there are 3 audioconvert.h include statements, but
usage of any of the symbols was removed almost 2.5 years ago. You only
need a trivial patch to fix it. (Or make the upstream project aware. I
didn't know about this, but removed the includes yesterday when I read
your post. Why didn't I ever get a bug report from you about this?)

How many more projects are there that can be trivially updated, but
you weren't aware of? I also doubt that software like vlc, kodi, or
chromium actually use deprecated API in their git development branches.
Why do you want to compile old releases against bleeding edge
libav/ffmpeg?

> Projects like blender, gst-libav or mplayer are reasonably recent in Debian
> and active upstream. But still they use deprecated APIs.
> 
> > Why do we have to suffer because Debian tries to compile ancient
> > releases against newer ffmpeg/libav releases? (How does that even make
> > sense?)
> 
> This is just your prejudice that doesn't have much to do with reality.

I've had very much experience with distro reality. They tend to make
everyone's life harder (including their own) by demanding that EVERY
project uses the same libav* build.

Well, if you want to do this, you're free to do so. But it's not our
problem. Feel free to put as much effort into it as you like.

> > And then there's the category of projects that are "alive", but barely
> > care about anything unless being severely prodded. I'm not sure why we
> > should suffer forever just to accommodate these projects. They had more
> > than enough time.
> 
> It's actually the other projects that have to suffer, because FFmpeg/Libav
> breaks it's API. Time alone is not enough, there also needs to be good
> documentation about API replacements and that is currently insufficient.

This is all very tiring. We're trying to improve the APIs everyone
likes to complain so much about. But staying compatible forever is just
not feasible. It leads to accumulation of strange things, even if it's
minor changes like the PIXFMT renames.

Do you think anyone has it easier to develop a program using the libs
when confronted with tons of legacy symbols?

> > I feel like I'm repeating myself and others, but I don't remember
> > whether you acknowledged these arguments.
> 
> I'm seeing more dramatic words than good arguments in your mail.

OK, let's be polemic: I'm seeing outright lies from you. Not nearly
enough important software as you make it seem depends on deprecated
features, and even if, many of them are trivially fixable.

Of course older releases of them use deprecated features, because at the
time they were not deprecated yet, or were still within the grace
period. And I don't see why you see this as "proof".

(Note that sometimes it's preferable to use deprecated features,
because distros are on ancient libav* versions to keep unmaintained
software depending on it going. This also very much sucks for the
project authors, btw.)

> >> Better documentation would surely be helpful.
> > 
> > Many of these are non-trivial. Project authors either update their
> > code, or the project dies. It's simple. If you don't want this, keep an
> > old ffmpeg/libav package around for them. But you distro peoples want a
> > single libavcodec package, no matter how much this fucking tortures
> > everyone.
> 
> So instead of keeping a little bit of deprecated code, everyone should
> keep multiple copies of libavcodec?
> This is several orders of magnitude worse.

Why is it worse? Disk space is very cheap, and the libs aren't that big
after all. But I know, you distro folks would rather waste a lot of
time trying to make all projects use the same libs, instead of going
the easy way.

By the way, why the hell do I have to have two versions of Qt and 2
versions of Python on my Debian system? These are much heavier than
libav*.

> Best regards,
> Andreas
> 
> 
> 1: https://bugs.debian.org/794817
> 2: 
> https://github.com/mpv-player/mpv/blob/master/audio/filter/af_lavcac3enc.c#L29

___
ffmpeg-devel mailing list
ffmpeg-d

Re: [FFmpeg-devel] [PATCH] swscale: Implement alphablendaway for planar 4:4:4 formats

2015-08-07 Thread Ronald S. Bultje
Hi,

On Fri, Aug 7, 2015 at 6:43 AM, Michael Niedermayer 
wrote:

> On Thu, Aug 06, 2015 at 10:24:52PM -0400, Ronald S. Bultje wrote:
> > Hi,
> >
> > On Thu, Aug 6, 2015 at 4:27 PM, Michael Niedermayer 
> > wrote:
> >
> > > From: Michael Niedermayer 
> > >
> > > Fixes Ticket4746
> > >
> > > TODO: implement packed formats and subsampled formats
> > >
> > > Signed-off-by: Michael Niedermayer 
> > > ---
> > >  doc/scaler.texi   |   13 ++
> > >  libswscale/Makefile   |3 +-
> > >  libswscale/alphablend.c   |   55 +++
> > >  libswscale/options.c  |3 ++
> > >  libswscale/swscale_internal.h |   12 +
> > >  libswscale/utils.c|   97
> > > +
> > >  6 files changed, 182 insertions(+), 1 deletion(-)
> > >  create mode 100644 libswscale/alphablend.c
> > >
> > > diff --git a/doc/scaler.texi b/doc/scaler.texi
> > > index 23d6393..4c55334 100644
> > > --- a/doc/scaler.texi
> > > +++ b/doc/scaler.texi
> > > @@ -122,6 +122,19 @@ a_dither).
> > >
> > >  @end table
> > >
> > > +@item alphablend
> > > +Set the alpha blending to use when the input has alpha but the output
> > > does not.
> > > +Default value is @samp{black}.
> > > +
> > > +@table @samp
> > > +@item black
> > > +Blend onto black
> > > +
> > > +@item none
> > > +No blending
> > > +
> > > +@end table
> > > +
> > >  @end table
> >
> >
> > I must admit I'm not a fan of having just two values for something like
> > this. It seems to me you want 2 options, "blendmode", being "none" or
> > "background" (or a float/alpha between 1.0/0.0), and the actual
> background
> > color (black, white, blue, r=a,g=b,c=d). "black" vs. "none" seems like a
> > future compat nightmare. Is it that hard to implement a proper rgb/yuv
> > value solution?
>
> The color value convertion support is in drawutils which is in
> libavfilter. also drawutils lacks support for >8bit formats
> so to get arbitrary color support with a clean non duplicated
> implementation it would require moving drawutils
> or the color related code from it to libavutil and extending it to
> support all pixel formats. Unless iam missing something
>
> Also i wanted to implement support for a checkerboard background
> (which some applications use as default and it shows what
> is transparent much better than black would)
>
> So i would suggest that we implement ATM a "none" + "solidcolor" or
> "background" or what name is preferred
> and ill add a black/white checkerboard mode later and once drawutils
> exist in libavutil we can then easily add a "blendcolor" AVOption
> to specify the exact color
>
> If noone objects then ill work on that (except drawutils moving and
> extending)


Sounds ok.

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


Re: [FFmpeg-devel] Problem Still Exists on avcodec/vdpau_hevc: Remove experimental flag

2015-08-07 Thread Philip Langdale
On Fri, 7 Aug 2015 09:45:23 + (UTC)
Ali KIZIL  wrote:

> Hello,
> 
> I wanted to inform interleaving problem still exisits even with
> Nvidia 355.06 driver. More info here:
> 
> https://github.com/FFmpeg/FFmpeg/commit/aa10f0aab0e2729e0a5edbd7b6838658d6
> 3421e1

I replied on github too, but yes, this is a known problem. They fixed
it for video being rendered for display but didn't fix the read-back
path used by ffmpeg.c

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


Re: [FFmpeg-devel] [PATCH] movtextdec.c: Add support for font names

2015-08-07 Thread Niklesh Lalwani
The leak was happening because the m->count_f was initialised to 0 at the
wrong place which was used in freeing the mem allocs. I am posting a patch
to fix that.

Thanks,
Niklesh

On Fri, Aug 7, 2015 at 5:11 AM, Michael Niedermayer 
wrote:

> On Thu, Aug 06, 2015 at 09:17:17AM +0530, Niklesh Lalwani wrote:
> > Changes incorporated.
> > Updated patch attached.
> >
> > Thanks,
> > Niklesh
> >
> > On Thu, Aug 6, 2015 at 7:51 AM, Philip Langdale 
> wrote:
> >
> > > On Thu, 6 Aug 2015 07:13:07 +0530
> > > Niklesh Lalwani  wrote:
> > >
> > > > On Thu, Aug 6, 2015 at 2:02 AM, Philip Langdale 
> > > > wrote:
> > > >
> > > > > On Thu, 6 Aug 2015 00:12:07 +0530
> > > > > Niklesh Lalwani  wrote:
> > > > >
> > > > > > From 90f466bb6a5d3cd24d7ea4d9fd8a2915cc68cdb2 Mon Sep 17 00:00:00
> > > > > > 2001 From: Niklesh 
> > > > > > Date: Thu, 6 Aug 2015 00:06:15 +0530
> > > > > > Subject: [PATCH] movtextdec.c: Add support for font names
> > > > > >
> > > > > > Signed-off-by: Niklesh 
> > > > > > ---
> > > > > >  libavcodec/movtextdec.c | 109
> > > > > > ++-- 1 file changed,
> > > > > > 106 insertions(+), 3 deletions(-)
> > > > > >
> > > > > > diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
> > > > > > index 869358c..451056c 100644
> > > > > > --- a/libavcodec/movtextdec.c
> > > > > > +++ b/libavcodec/movtextdec.c
> > > > > > @@ -36,10 +36,17 @@
> > > > > >  #define HCLR_BOX   (1<<2)
> > > > > >
> > > > > >  typedef struct {
> > > > > > +uint16_t fontID;
> > > > > > +uint8_t font_name_length;
> > > > > > +uint8_t font[20];
> > > > > > +} FontRecord;
> > > > > > +
> > > > > > +typedef struct {
> > > > > >  uint16_t style_start;
> > > > > >  uint16_t style_end;
> > > > > >  uint8_t style_flag;
> > > > > >  uint8_t fontsize;
> > > > > > +uint16_t style_fontID;
> > > > > >  } StyleBox;
> > > > > >
> > > > > >  typedef struct {
> > > > > > @@ -56,11 +63,13 @@ typedef struct {
> > > > > >  StyleBox *s_temp;
> > > > > >  HighlightBox h;
> > > > > >  HilightcolorBox c;
> > > > > > +FontRecord **ftab;
> > > > > > +FontRecord *ftab_temp;
> > > > > >  uint8_t box_flags;
> > > > > > -uint16_t style_entries;
> > > > > > +uint16_t style_entries, ftab_entries;
> > > > > >  uint64_t tracksize;
> > > > > >  int size_var;
> > > > > > -int count_s;
> > > > > > +int count_s, count_f;
> > > > > >  } MovTextContext;
> > > > > >
> > > > > >  typedef struct {
> > > > > > @@ -80,6 +89,80 @@ static void mov_text_cleanup(MovTextContext
> *m)
> > > > > >  }
> > > > > >  }
> > > > > >
> > > > > > +static void mov_text_cleanup_ftab(MovTextContext *m)
> > > > > > +{
> > > > > > +int i;
> > > > > > +for(i = 0; i < m->count_f; i++) {
> > > > > > +av_freep(&m->ftab[i]);
> > > > > > +}
> > > > > > +av_freep(&m->ftab);
> > > > > > +}
> > > > > > +
> > > > > > +static int mov_text_t3xg(AVCodecContext *avctx, MovTextContext
> > > > > > *m)
> > > > >
> > > > > I'm pretty sure it's "tx3g"
> > > > >
> > > > > > +{
> > > > > > +char *t3xg_ptr = avctx->extradata;
> > > > > > +int i, tracksize;
> > > > > > +
> > > > > > +tracksize = 38; /* Size till ftab_entries */
> > > > >
> > > > > I'd say box size. It's not technically a track.
> > > > >
> > > > > And make the 38 a constant.
> > > > >
> > > > > > +if (avctx->extradata_size < tracksize)
> > > > > > +return -1;
> > > > > > +
> > > > > > +m->ftab_entries = 0;
> > > > > > +// Display Flags
> > > > > > +t3xg_ptr += 4;
> > > > > > +// Alignment
> > > > > > +t3xg_ptr += 2;
> > > > > > +// Background Color
> > > > > > +t3xg_ptr += 4;
> > > > > > +// BoxRecord
> > > > > > +t3xg_ptr += 8;
> > > > > > +// StyleRecord
> > > > > > +t3xg_ptr += 12;
> > > > > > +// FontRecord
> > > > > > +// FontRecord Size
> > > > > > +t3xg_ptr += 4;
> > > > > > +// ftab
> > > > > > +t3xg_ptr += 4;
> > > > > > +
> > > > > > +tracksize += 2;
> > > > > > +if (avctx->extradata_size < tracksize)
> > > > > > +return -1;
> > > > >
> > > > > Why not just initialize tracksize to 40? The extra += 2 isn't
> > > > > optional.
> > > > >
> > > > > > +
> > > > > > +m->ftab_entries = AV_RB16(t3xg_ptr);
> > > > > > +t3xg_ptr += 2;
> > > > > > +
> > > > > > +for (i = 0; i < m->ftab_entries; i++) {
> > > > > > +
> > > > > > +tracksize += 3;
> > > > > > +if (avctx->extradata_size < tracksize) {
> > > > > > +m->ftab_entries = 0;
> > > > > > +return -1;
> > > > > > +}
> > > > >
> > > > > You need to clean up any ftab entries that have already been
> > > > > processed.
> > > > >
> > > > > > +m->ftab_temp = av_malloc(sizeof(*m->ftab_temp));
> > > > > > +if (!m->ftab_temp) {
> > > > > > +mov_text_cleanup_ftab(m);
> > > > > > +return AVERROR(ENOMEM);
> > > > > > +}
> > > > > > +m->ftab_tem

[FFmpeg-devel] [PATCH] movtextdec: Fix memory leaks by freeing mem allocs correctly

2015-08-07 Thread Niklesh Lalwani
From: Niklesh 

Initialize m->count_f to 0 at the correct place to free memory allocs properly.
 
Signed-off-by: Niklesh 
---
 libavcodec/movtextdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
index 83b0231..fc6993e 100644
--- a/libavcodec/movtextdec.c
+++ b/libavcodec/movtextdec.c
@@ -107,6 +107,7 @@ static int mov_text_tx3g(AVCodecContext *avctx, 
MovTextContext *m)
 char *tx3g_ptr = avctx->extradata;
 int i, box_size, font_length;
 
+m->count_f = 0;
 m->ftab_entries = 0;
 box_size = BOX_SIZE_INITIAL; /* Size till ftab_entries */
 if (avctx->extradata_size < box_size)
@@ -363,7 +364,6 @@ static int mov_text_decode_frame(AVCodecContext *avctx,
 m->style_entries = 0;
 m->box_flags = 0;
 m->count_s = 0;
-m->count_f = 0;
 // Note that the spec recommends lines be no longer than 2048 characters.
 av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
 if (text_length + 2 != avpkt->size) {
-- 
1.9.1

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


[FFmpeg-devel] Ticket4753 question

2015-08-07 Thread Ganesh Ajjanagadde
https://trac.ffmpeg.org/ticket/4753:
The issue seems to come from the fact that there are multiple frames per packet.
In fact, the duration field of the packet is set incorrectly,
and reports the duration of a single frame only (80).
Unfortunately, I do not know about where/how this needs to be done,
but can do this if a dev outlines the process.

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


Re: [FFmpeg-devel] Ticket4753 question

2015-08-07 Thread Paul B Mahol
On 8/7/15, Ganesh Ajjanagadde  wrote:
> https://trac.ffmpeg.org/ticket/4753:
> The issue seems to come from the fact that there are multiple frames per
> packet.
> In fact, the duration field of the packet is set incorrectly,
> and reports the duration of a single frame only (80).
> Unfortunately, I do not know about where/how this needs to be done,
> but can do this if a dev outlines the process.

Write trivial g729_parser which splits input into 8 byte packets.

Problem is how to tell parser from demuxer that another non 8 byte
mode is in operation.
Because decoder operates in one of two modes, either 8 byte or 10 byte.

>
> Thanks,
> Ganesh
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/2] better demo ffmpeg filters; demos chaining the filters

2015-08-07 Thread harshit mittal
Hi ffmpeg developers,
I want to submit the following patch. It's a minor thing that improves the
filtering_video.c to demo chaining of vfilters.

>From ceda852421e51712352ab2b1230b715ea0073f6a Mon Sep 17 00:00:00 2001
From: Harshit Mittal 
Date: Wed, 5 Aug 2015 12:41:49 -0700
Subject: [PATCH 1/2] better demo ffmpeg filters; demos chaining the filters

---
 doc/examples/filtering_video.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/examples/filtering_video.c b/doc/examples/filtering_video.c
index c02040a..7c710e2 100644
--- a/doc/examples/filtering_video.c
+++ b/doc/examples/filtering_video.c
@@ -38,7 +38,7 @@
 #include 
 #include 

-const char *filter_descr = "scale=78:24";
+const char *filter_descr = "[in] scale=78:24 [scl]; [scl]
transpose=cclock";

 static AVFormatContext *fmt_ctx;
 static AVCodecContext *dec_ctx;
-- 
2.5.0


>From ef9df636f2e6181c887c8109081f4b72ee794cec Mon Sep 17 00:00:00 2001
From: Harshit Mittal 
Date: Thu, 6 Aug 2015 12:40:40 -0700
Subject: [PATCH 2/2] demo without the pads

---
 doc/examples/filtering_video.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/doc/examples/filtering_video.c b/doc/examples/filtering_video.c
index 7c710e2..5685380 100644
--- a/doc/examples/filtering_video.c
+++ b/doc/examples/filtering_video.c
@@ -38,7 +38,10 @@
 #include 
 #include 

-const char *filter_descr = "[in] scale=78:24 [scl]; [scl]
transpose=cclock";
+const char *filter_descr = "scale=78:24,transpose=cclock";
+/* other way:
+   scale=78:24 [scl]; [scl] transpose=cclock // assumes "[in]" and "[out]"
to be input output pads respectively
+ */

 static AVFormatContext *fmt_ctx;
 static AVCodecContext *dec_ctx;
-- 
2.5.0


FROM: https://github.com/FFmpeg/FFmpeg/pull/145


ffmpeg_vfilters_demo.patch
Description: Binary data
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] Ticket4753 question

2015-08-07 Thread Ganesh Ajjanagadde
On Fri, Aug 7, 2015 at 11:59 AM, Paul B Mahol  wrote:
> On 8/7/15, Ganesh Ajjanagadde  wrote:
>> https://trac.ffmpeg.org/ticket/4753:
>> The issue seems to come from the fact that there are multiple frames per
>> packet.
>> In fact, the duration field of the packet is set incorrectly,
>> and reports the duration of a single frame only (80).
>> Unfortunately, I do not know about where/how this needs to be done,
>> but can do this if a dev outlines the process.
>
> Write trivial g729_parser which splits input into 8 byte packets.

Thanks, I have implemented the 8 byte case.

>
> Problem is how to tell parser from demuxer that another non 8 byte
> mode is in operation.
> Because decoder operates in one of two modes, either 8 byte or 10 byte.

This is tricky. A dirty but simple solution would be to add a field to
the priv_data of the avctx,
i.e to G729Context to represent the format, and use that in the parser.
I have not seen any other parser do this though.

Note that the parser is quite limited in what it can see:
the AVCodecParserContext can't contain this information as far as I can tell,
so only AVCodecContext can.
In this case I don't know how to do this without resorting to the priv_data.

Any suggestions?

>
>>
>> Thanks,
>> Ganesh
>> ___
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [libav-devel] [PATCH 0/20] removal of deprecated features

2015-08-07 Thread Dominik 'Rathann' Mierzejewski
Hello,

On Friday, 07 August 2015 at 15:36, wm4 wrote:
> On Thu, 6 Aug 2015 23:26:05 +0200
> Andreas Cadhalpun  wrote:
> > On 06.08.2015 00:53, wm4 wrote:
[...]
> > > Why do we have to suffer because Debian tries to compile ancient
> > > releases against newer ffmpeg/libav releases? (How does that even make
> > > sense?)
> > 
> > This is just your prejudice that doesn't have much to do with reality.
> 
> I've had very much experience with distro reality. They tend to make
> everyone's life harder (including their own) by demanding that EVERY
> project uses the same libav* build.

Actually, speaking with my distro hat on, that's more or less the idea,
though I wouldn't say we (Fedora/RPMFusion) are demanding anything.
We do want to ship a single ffmpeg build per distro release and have
each depending project link against it. If that means
back/forward-porting code to adapt the other projects to API changes
then that's the package maintainer's job.

> Well, if you want to do this, you're free to do so. But it's not our
> problem. Feel free to put as much effort into it as you like.

Indeed. Though we may ask politely that FFmpeg project supports a given
ffmpeg release for the ~13 months of a given Fedora release lifecycle.

We would very much appreciate porting-to-new-API guides as that would
make providing patches to depending project upstreams a lot easier.

[...]
> > >> Better documentation would surely be helpful.
> > > 
> > > Many of these are non-trivial. Project authors either update their
> > > code, or the project dies. It's simple. If you don't want this, keep an
> > > old ffmpeg/libav package around for them. But you distro peoples want a
> > > single libavcodec package, no matter how much this fucking tortures
> > > everyone.
> > 
> > So instead of keeping a little bit of deprecated code, everyone should
> > keep multiple copies of libavcodec?
> > This is several orders of magnitude worse.
> 
> Why is it worse? Disk space is very cheap, and the libs aren't that big
> after all. But I know, you distro folks would rather waste a lot of
> time trying to make all projects use the same libs, instead of going
> the easy way.

Yes, we do. Once the initial porting work is done, we can fix security
issues and other bugs in one place, by updating one package. That's
a big maintenance win.

However, at least in Fedora, if a project can't be ported to current library
APIs (for example because it's dead) then we either drop it or introduce
a compat package with an older version of the library. There is strong
preference for the first option though.

> By the way, why the hell do I have to have two versions of Qt and 2
> versions of Python on my Debian system? These are much heavier than
> libav*.

You're right, but there are also much more users of Qt and Python
and there are (I think) much more extensive API changes between Qt 4 and
5, and between python-2.x and 3.x. They were also designed as parallel
installable from the beginning.

Regards,
Dominik (FFmpeg (co-)maintainer in RPMFusion/Fedora)
-- 
MPlayer http://mplayerhq.hu | RPM Fusion http://rpmfusion.org
There should be a science of discontent. People need hard times and
oppression to develop psychic muscles.
-- from "Collected Sayings of Muad'Dib" by the Princess Irulan
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffmpeg: modify tty state when stderr is redirected

2015-08-07 Thread Ganesh Ajjanagadde
On Tue, Aug 4, 2015 at 8:54 PM, Ganesh Ajjanagadde  wrote:
> On Mon, Aug 3, 2015 at 10:47 AM, Nicolas George  wrote:
>> Le sextidi 16 thermidor, an CCXXIII, Hendrik Leppkes a écrit :
>>> Trashing the state even more often just because there is one example
>>> where this can already happen is not a valid reasoning.
>>
>> The changes should be applied because they are the RIGHT behaviour, as I
>> explained in this mail:
>>
>> http://ffmpeg.org/pipermail/ffmpeg-devel/2015-July/176480.html
>>
>> The second patch gives a 10-second solutions that will fix ALL trashed ttys,
>> for FFmpeg and every other program on the system.
>>
>> Furthermore, the third patch ensures that the particular case that this
>> absurd heuristic fixed does not happen anyway.
>
> Above explanation gives good justification for this patch.
> Is there anything I can do to get the patch series applied?

ping

>
>>
>> Regards,
>>
>> --
>>   Nicolas George
>>
>> ___
>> 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] Ticket4753 question

2015-08-07 Thread Paul B Mahol
On 8/7/15, Ganesh Ajjanagadde  wrote:
> On Fri, Aug 7, 2015 at 11:59 AM, Paul B Mahol  wrote:
>> On 8/7/15, Ganesh Ajjanagadde  wrote:
>>> https://trac.ffmpeg.org/ticket/4753:
>>> The issue seems to come from the fact that there are multiple frames per
>>> packet.
>>> In fact, the duration field of the packet is set incorrectly,
>>> and reports the duration of a single frame only (80).
>>> Unfortunately, I do not know about where/how this needs to be done,
>>> but can do this if a dev outlines the process.
>>
>> Write trivial g729_parser which splits input into 8 byte packets.
>
> Thanks, I have implemented the 8 byte case.
>
>>
>> Problem is how to tell parser from demuxer that another non 8 byte
>> mode is in operation.
>> Because decoder operates in one of two modes, either 8 byte or 10 byte.
>
> This is tricky. A dirty but simple solution would be to add a field to
> the priv_data of the avctx,
> i.e to G729Context to represent the format, and use that in the parser.
> I have not seen any other parser do this though.
>
> Note that the parser is quite limited in what it can see:
> the AVCodecParserContext can't contain this information as far as I can
> tell,
> so only AVCodecContext can.
> In this case I don't know how to do this without resorting to the priv_data.

At decoder level you can not guess it, neither at demuxer level and
AFAIK only wav does
put multiple frames into single packet. The only way is via option but
AFAIK you can not read decoder options from parser.

>
> Any suggestions?
>
>>
>>>
>>> Thanks,
>>> Ganesh
>>> ___
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>> ___
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] Ticket4753 question

2015-08-07 Thread Ganesh Ajjanagadde
On Fri, Aug 7, 2015 at 4:09 PM, Paul B Mahol  wrote:
> On 8/7/15, Ganesh Ajjanagadde  wrote:
>> On Fri, Aug 7, 2015 at 11:59 AM, Paul B Mahol  wrote:
>>> On 8/7/15, Ganesh Ajjanagadde  wrote:
 https://trac.ffmpeg.org/ticket/4753:
 The issue seems to come from the fact that there are multiple frames per
 packet.
 In fact, the duration field of the packet is set incorrectly,
 and reports the duration of a single frame only (80).
 Unfortunately, I do not know about where/how this needs to be done,
 but can do this if a dev outlines the process.
>>>
>>> Write trivial g729_parser which splits input into 8 byte packets.
>>
>> Thanks, I have implemented the 8 byte case.
>>
>>>
>>> Problem is how to tell parser from demuxer that another non 8 byte
>>> mode is in operation.
>>> Because decoder operates in one of two modes, either 8 byte or 10 byte.
>>
>> This is tricky. A dirty but simple solution would be to add a field to
>> the priv_data of the avctx,
>> i.e to G729Context to represent the format, and use that in the parser.
>> I have not seen any other parser do this though.
>>
>> Note that the parser is quite limited in what it can see:
>> the AVCodecParserContext can't contain this information as far as I can
>> tell,
>> so only AVCodecContext can.
>> In this case I don't know how to do this without resorting to the priv_data.
>
> At decoder level you can not guess it, neither at demuxer level and
> AFAIK only wav does
> put multiple frames into single packet. The only way is via option but
> AFAIK you can not read decoder options from parser.

I must be missing something, g729dec.c decode_frame does set packet_type
to the appropriate mode based on avpkt->size.
In fact, this is how currently the two modes (8k vs 6.4k) are differentiated.
Why can't this be used to set a flag in avctx->priv_data (barring the ugliness)?

>
>>
>> Any suggestions?
>>
>>>

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

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


Re: [FFmpeg-devel] Ticket4753 question

2015-08-07 Thread Paul B Mahol
Dana 7. 8. 2015. 22:44 osoba "Ganesh Ajjanagadde" 
napisala je:
>
> On Fri, Aug 7, 2015 at 4:09 PM, Paul B Mahol  wrote:
> > On 8/7/15, Ganesh Ajjanagadde  wrote:
> >> On Fri, Aug 7, 2015 at 11:59 AM, Paul B Mahol  wrote:
> >>> On 8/7/15, Ganesh Ajjanagadde  wrote:
>  https://trac.ffmpeg.org/ticket/4753:
>  The issue seems to come from the fact that there are multiple frames
per
>  packet.
>  In fact, the duration field of the packet is set incorrectly,
>  and reports the duration of a single frame only (80).
>  Unfortunately, I do not know about where/how this needs to be done,
>  but can do this if a dev outlines the process.
> >>>
> >>> Write trivial g729_parser which splits input into 8 byte packets.
> >>
> >> Thanks, I have implemented the 8 byte case.
> >>
> >>>
> >>> Problem is how to tell parser from demuxer that another non 8 byte
> >>> mode is in operation.
> >>> Because decoder operates in one of two modes, either 8 byte or 10
byte.
> >>
> >> This is tricky. A dirty but simple solution would be to add a field to
> >> the priv_data of the avctx,
> >> i.e to G729Context to represent the format, and use that in the parser.
> >> I have not seen any other parser do this though.
> >>
> >> Note that the parser is quite limited in what it can see:
> >> the AVCodecParserContext can't contain this information as far as I can
> >> tell,
> >> so only AVCodecContext can.
> >> In this case I don't know how to do this without resorting to the
priv_data.
> >
> > At decoder level you can not guess it, neither at demuxer level and
> > AFAIK only wav does
> > put multiple frames into single packet. The only way is via option but
> > AFAIK you can not read decoder options from parser.
>
> I must be missing something, g729dec.c decode_frame does set packet_type
> to the appropriate mode based on avpkt->size.
> In fact, this is how currently the two modes (8k vs 6.4k) are
differentiated.
> Why can't this be used to set a flag in avctx->priv_data (barring the
ugliness)?

For example 80 is multiple of 8 and 10 you can't use that to guess mode.
>
> >
> >>
> >> Any suggestions?
> >>
> >>>
> 
>  Thanks,
>  Ganesh
>  ___
>  ffmpeg-devel mailing list
>  ffmpeg-devel@ffmpeg.org
>  http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> >>> ___
> >>> ffmpeg-devel mailing list
> >>> ffmpeg-devel@ffmpeg.org
> >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >> ___
> >> ffmpeg-devel mailing list
> >> ffmpeg-devel@ffmpeg.org
> >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>
> > ___
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> ___
> 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] Ticket4753 question

2015-08-07 Thread Ganesh Ajjanagadde
On Fri, Aug 7, 2015 at 6:05 PM, Paul B Mahol  wrote:
> Dana 7. 8. 2015. 22:44 osoba "Ganesh Ajjanagadde" 
> napisala je:
>>
>> On Fri, Aug 7, 2015 at 4:09 PM, Paul B Mahol  wrote:
>> > On 8/7/15, Ganesh Ajjanagadde  wrote:
>> >> On Fri, Aug 7, 2015 at 11:59 AM, Paul B Mahol  wrote:
>> >>> On 8/7/15, Ganesh Ajjanagadde  wrote:
>>  https://trac.ffmpeg.org/ticket/4753:
>>  The issue seems to come from the fact that there are multiple frames
> per
>>  packet.
>>  In fact, the duration field of the packet is set incorrectly,
>>  and reports the duration of a single frame only (80).
>>  Unfortunately, I do not know about where/how this needs to be done,
>>  but can do this if a dev outlines the process.
>> >>>
>> >>> Write trivial g729_parser which splits input into 8 byte packets.
>> >>
>> >> Thanks, I have implemented the 8 byte case.
>> >>
>> >>>
>> >>> Problem is how to tell parser from demuxer that another non 8 byte
>> >>> mode is in operation.
>> >>> Because decoder operates in one of two modes, either 8 byte or 10
> byte.
>> >>
>> >> This is tricky. A dirty but simple solution would be to add a field to
>> >> the priv_data of the avctx,
>> >> i.e to G729Context to represent the format, and use that in the parser.
>> >> I have not seen any other parser do this though.
>> >>
>> >> Note that the parser is quite limited in what it can see:
>> >> the AVCodecParserContext can't contain this information as far as I can
>> >> tell,
>> >> so only AVCodecContext can.
>> >> In this case I don't know how to do this without resorting to the
> priv_data.
>> >
>> > At decoder level you can not guess it, neither at demuxer level and
>> > AFAIK only wav does
>> > put multiple frames into single packet. The only way is via option but
>> > AFAIK you can not read decoder options from parser.
>>
>> I must be missing something, g729dec.c decode_frame does set packet_type
>> to the appropriate mode based on avpkt->size.
>> In fact, this is how currently the two modes (8k vs 6.4k) are
> differentiated.
>> Why can't this be used to set a flag in avctx->priv_data (barring the
> ugliness)?
>
> For example 80 is multiple of 8 and 10 you can't use that to guess mode.

True, but that is a general failing of the decoder currently present.
By setting the priv_data,
we are making as good an effort as the decoder currently does.

>>
>> >
>> >>
>> >> Any suggestions?
>> >>
>> >>>
>> 
>>  Thanks,
>>  Ganesh
>>  ___
>>  ffmpeg-devel mailing list
>>  ffmpeg-devel@ffmpeg.org
>>  http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> >>> ___
>> >>> ffmpeg-devel mailing list
>> >>> ffmpeg-devel@ffmpeg.org
>> >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> >> ___
>> >> ffmpeg-devel mailing list
>> >> ffmpeg-devel@ffmpeg.org
>> >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> >>
>> > ___
>> > ffmpeg-devel mailing list
>> > ffmpeg-devel@ffmpeg.org
>> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> ___
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec: add new Videotoolbox hwaccel.

2015-08-07 Thread Sebastien Zwickert

> On 03 Aug 2015, at 10:27, Clément Bœsch  wrote:
> 
> On Fri, Jul 31, 2015 at 08:57:49PM +0200, Clément Bœsch wrote:
>> On Thu, Jul 30, 2015 at 05:12:21PM +0800, Zhang Rui wrote:
>> [...]
>>> BTW:
>>> I think current patch is OK enough.
>> 
>> I will push it soon (unless Sebastien has write access?)
>> 
> 
> Applied.

Thanks! I've write access but was in a hurry professional these last weeks.

> 
>>> Async-mode could be an experimental option.
>> 
>> Sebastien, do you plan to work on this? I quickly tried to add the async
>> flag as decoding but as expected it's not enought to make it work. I
>> suppose we need a queue or something.
>> 
> 
> ping, I'll be working on that otherwise.

Indeed, with the async decoding enabled a queue is required to reorder
the decoded frames.

I spent some times today and got an experimental implementation that allows
to enable the async decoding mode.
I’ll provide a patch here for the async support this weekend.

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


Re: [FFmpeg-devel] [libav-devel] [PATCH 0/20] removal of deprecated features

2015-08-07 Thread wm4
On Fri, 7 Aug 2015 19:28:26 +0200
Dominik 'Rathann' Mierzejewski  wrote:

> Hello,
> 
> On Friday, 07 August 2015 at 15:36, wm4 wrote:
> > On Thu, 6 Aug 2015 23:26:05 +0200
> > Andreas Cadhalpun  wrote:
> > > On 06.08.2015 00:53, wm4 wrote:
> [...]
> > > > Why do we have to suffer because Debian tries to compile ancient
> > > > releases against newer ffmpeg/libav releases? (How does that even make
> > > > sense?)
> > > 
> > > This is just your prejudice that doesn't have much to do with reality.
> > 
> > I've had very much experience with distro reality. They tend to make
> > everyone's life harder (including their own) by demanding that EVERY
> > project uses the same libav* build.
> 
> Actually, speaking with my distro hat on, that's more or less the idea,
> though I wouldn't say we (Fedora/RPMFusion) are demanding anything.
> We do want to ship a single ffmpeg build per distro release and have
> each depending project link against it. If that means
> back/forward-porting code to adapt the other projects to API changes
> then that's the package maintainer's job.

That's a commendable goal, but also somewhat counterproductive. If the
devs of a project say that the software can't run with a newer or older
ffmpeg version, it probably has its reasons. I think it's not
unreasonable to ship a software with the dependencies recommended by
its developers.

But the main effect is that the distro's entire multimedia
infrastructure is held back because some relatively unimportant
programs still weren't ported to newer ffmpeg.

And somehow maintainers seem to blame the API improvement progress in
ffmpeg/Libav (especially Libav), instead of the maintainers of these
programs.

(But duplicating Python or Qt is apparently OK.)

> > Well, if you want to do this, you're free to do so. But it's not our
> > problem. Feel free to put as much effort into it as you like.
> 
> Indeed. Though we may ask politely that FFmpeg project supports a given
> ffmpeg release for the ~13 months of a given Fedora release lifecycle.

If someone takes it on... until recently we actually had a maintainer
who managed a dozen release branches or so, but I doubt other current
FFmpeg devs are so enthusiastic about it.

> We would very much appreciate porting-to-new-API guides as that would
> make providing patches to depending project upstreams a lot easier.

Actually Libav, which did pretty much all API changes (as opposed to
additions), has migration guides:

https://wiki.libav.org/Migration/10
https://wiki.libav.org/Migration/11

Of course FFmpeg merged only the git commits, but (apparently) didn't
provide any migration guides.

I think there were also ideas to provide more examples, such as for
libavresample in order to make the lavc resampler deprecation easier.
Not sure what happened to this.

At least FFmpeg has a resampler example:

http://git.videolan.org/?p=ffmpeg.git;a=blob;f=doc/examples/resampling_audio.c

> [...]
> > > >> Better documentation would surely be helpful.
> > > > 
> > > > Many of these are non-trivial. Project authors either update their
> > > > code, or the project dies. It's simple. If you don't want this, keep an
> > > > old ffmpeg/libav package around for them. But you distro peoples want a
> > > > single libavcodec package, no matter how much this fucking tortures
> > > > everyone.
> > > 
> > > So instead of keeping a little bit of deprecated code, everyone should
> > > keep multiple copies of libavcodec?
> > > This is several orders of magnitude worse.
> > 
> > Why is it worse? Disk space is very cheap, and the libs aren't that big
> > after all. But I know, you distro folks would rather waste a lot of
> > time trying to make all projects use the same libs, instead of going
> > the easy way.
> 
> Yes, we do. Once the initial porting work is done, we can fix security
> issues and other bugs in one place, by updating one package. That's
> a big maintenance win.

Applying a single patch to 2 very similar codebases is very simple.
Uploading multiple packages automatically surely is trivial.

Keep in mind that a FFmpeg maintainer would have to do the same thing.

> However, at least in Fedora, if a project can't be ported to current library
> APIs (for example because it's dead) then we either drop it or introduce
> a compat package with an older version of the library. There is strong
> preference for the first option though.
> 
> > By the way, why the hell do I have to have two versions of Qt and 2
> > versions of Python on my Debian system? These are much heavier than
> > libav*.
> 
> You're right, but there are also much more users of Qt and Python
> and there are (I think) much more extensive API changes between Qt 4 and
> 5, and between python-2.x and 3.x. They were also designed as parallel
> installable from the beginning.

So is it ok if FFmpeg changes more radically between releases, and
use different pkg-config names on each major (incompatible) bump?

> Regards,
> Dominik (FFmpeg (co-)maintainer in RPMFusion/

[FFmpeg-devel] [rfc] ffmpeg security issue mailing list

2015-08-07 Thread compn
hello,

some of you know that we have a list for security / CVE issues.
some of you did not know this.

i think it is a private list due to not wanting people to make exploits
before we have a chance to fix them. of course, if no one is subscribed
to review/fix issues then they will never get fixed.

so if you are a regular developer who wants access to this list, please
speak up.

i do not run nor admin the security email/list (nor do i know who does)
so please dont ask me questions about it.

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


Re: [FFmpeg-devel] [rfc] ffmpeg security issue mailing list

2015-08-07 Thread Michael Niedermayer
On Fri, Aug 07, 2015 at 07:46:55PM -0400, compn wrote:
> hello,
> 
> some of you know that we have a list for security / CVE issues.
> some of you did not know this.
> 
> i think it is a private list due to not wanting people to make exploits
> before we have a chance to fix them. of course, if no one is subscribed
> to review/fix issues then they will never get fixed.
> 
> so if you are a regular developer who wants access to this list, please
> speak up.
> 
> i do not run nor admin the security email/list (nor do i know who does)
> so please dont ask me questions about it.

I guess, i "de facto" admin the security "email/list".
if someone wants to help with security issues, mail me

but there are no open security issues and if there was one i very
likely would fix it ASAP

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

I do not agree with what you have to say, but I'll defend to the death your
right to say it. -- Voltaire


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


[FFmpeg-devel] [PATCH 2/4] avcodec/samidec: use ff_htmlmarkup_to_ass()

2015-08-07 Thread Yayoi
---
 libavcodec/samidec.c| 59 +
 tests/ref/fate/sub-sami | 18 +++
 2 files changed, 44 insertions(+), 33 deletions(-)

diff --git a/libavcodec/samidec.c b/libavcodec/samidec.c
index 47850e2..41826a7 100644
--- a/libavcodec/samidec.c
+++ b/libavcodec/samidec.c
@@ -27,6 +27,7 @@
 #include "ass.h"
 #include "libavutil/avstring.h"
 #include "libavutil/bprint.h"
+#include "htmlsubtitles.h"
 
 typedef struct {
 AVBPrint source;
@@ -41,11 +42,12 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, 
const char *src)
 char *tag = NULL;
 char *dupsrc = av_strdup(src);
 char *p = dupsrc;
+char *pcopy = NULL;
+int index = 0;
+int second_paragraph = 0;
 
-av_bprint_clear(&sami->content);
 for (;;) {
 char *saveptr = NULL;
-int prev_chr_is_space = 0;
 AVBPrint *dst = &sami->content;
 
 /* parse & extract paragraph tag */
@@ -77,37 +79,46 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, 
const char *src)
 goto end;
 }
 
-/* extract the text, stripping most of the tags */
+/* check for the second paragrph */
+pcopy = av_strdup(p);
 while (*p) {
 if (*p == '<') {
-if (!av_strncasecmp(p, "full);
-if (sami->source.len)
-av_bprintf(&sami->full, "{\\i1}%s{\\i0}\\N", sami->source.str);
-av_bprintf(&sami->full, "%s", sami->content.str);
+ff_htmlmarkup_to_ass(avctx, dst, p);
+
+/* add the source if there are any. */
+av_bprint_clear(&sami->full);
+if (sami->source.len) {
+av_bprintf(&sami->full, "{\\i1}%s{\\i0}\\N", sami->source.str);
+av_bprintf(&sami->full, "%s", sami->content.str);
+if (second_paragraph) {
+second_paragraph = 0;
+p = pcopy;
+p += index;
+index = 0;
+continue;
+}
+} else {
+av_bprintf(&sami->full, "%s", sami->content.str);
+}
+av_bprint_clear(&sami->content);
+
+}
 
 end:
+av_free(pcopy);
 av_free(dupsrc);
 return ret;
 }
diff --git a/tests/ref/fate/sub-sami b/tests/ref/fate/sub-sami
index caa85a2..3c73526 100644
--- a/tests/ref/fate/sub-sami
+++ b/tests/ref/fate/sub-sami
@@ -10,12 +10,12 @@ Style: 
Default,Arial,16,&Hff,&Hff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10
 
 [Events]
 Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:00.01,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\N
-Dialogue: 0,0:00:00.01,0:00:08.80,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\NLet the word go forth, from this time and place to friend and foe alike 
that the torch 
-Dialogue: 0,0:00:08.80,0:00:19.50,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\Nhas been passed to a new generation of Americans, born in this century, 
tempered by war, 
-Dialogue: 0,0:00:19.50,0:00:28.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\Ndisciplined by a hard and bitter peace, proud of our ancient heritage, 
and unwilling to witness 
-Dialogue: 0,0:00:28.00,0:00:38.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\Nor permit the slow undoing of those human rights to which this nation 
has always 
-Dialogue: 0,0:00:38.00,0:00:46.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\Nbeen committed and to which we are committed today at home and around 
the world. 
-Dialogue: 0,0:00:46.00,0:01:01.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\NLet every nation know, whether it wishes us well or ill, that we shall 
pay any price, bear any burden, 
-Dialogue: 0,0:01:01.00,0:01:13.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy 
{\i0}\Nmeet any hardship, support any friend, oppose any foe, to ensure the 
survival and success of liberty. 
-Dialogue: 0,0:01:13.00,9:59:59.99,Default,,0,0,0,,{\i1}End of: 
{\i0}\NPresident John F. Kennedy Speech 
+Dialogue: 0,0:00:00.00,0:00:00.01,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\N
+Dialogue: 0,0:00:00.01,0:00:08.80,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\NLet the word go forth,\Nfrom this time and place to friend and 
foe\Nalike that the torch
+Dialogue: 0,0:00:08.80,0:00:19.50,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\Nhas been passed to a new generation of Americans,\Nborn in this 
century, tempered by war,
+Dialogue: 0,0:00:19.50,0:00:28.00,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\Ndisciplined by a hard and bitter peace,\Nproud of our ancient 
heritage, and unwilling to witness
+Dialogue: 0,0:00:28.00,0:00:38.00,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\Nor permit the slow undoing of those human rights\Nto which this 
nation has always,
+Dialogue: 0,0:00:38.00,0:00:46.00,Default,,0,0,0,,{\i1}Pres. John F. 
Kennedy{\i0}\Nbeen committed and to which we are\Ncommitted today at home and 
around the world.
+Dialogue: 0,0:00:46.00,0:01:01.00,Default,

[FFmpeg-devel] [PATCH 1/4] avcodec/strdec: factor out HTML parsing code

2015-08-07 Thread Yayoi
This code will be used in SAMI decoder in a later commit.
---
 libavcodec/Makefile|   4 +-
 libavcodec/htmlsubtitles.c | 198 +
 libavcodec/htmlsubtitles.h |  29 +++
 libavcodec/srtdec.c| 149 +-
 4 files changed, 231 insertions(+), 149 deletions(-)
 create mode 100644 libavcodec/htmlsubtitles.c
 create mode 100644 libavcodec/htmlsubtitles.h

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index e61b9cd..8201aa0 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -447,7 +447,7 @@ OBJS-$(CONFIG_RV20_DECODER)+= rv10.o
 OBJS-$(CONFIG_RV20_ENCODER)+= rv20enc.o
 OBJS-$(CONFIG_RV30_DECODER)+= rv30.o rv34.o rv30dsp.o
 OBJS-$(CONFIG_RV40_DECODER)+= rv40.o rv34.o rv40dsp.o
-OBJS-$(CONFIG_SAMI_DECODER)+= samidec.o ass.o
+OBJS-$(CONFIG_SAMI_DECODER)+= samidec.o ass.o htmlsubtitles.o
 OBJS-$(CONFIG_S302M_DECODER)   += s302m.o
 OBJS-$(CONFIG_S302M_ENCODER)   += s302menc.o
 OBJS-$(CONFIG_SANM_DECODER)+= sanm.o
@@ -471,7 +471,7 @@ OBJS-$(CONFIG_SONIC_DECODER)   += sonic.o
 OBJS-$(CONFIG_SONIC_ENCODER)   += sonic.o
 OBJS-$(CONFIG_SONIC_LS_ENCODER)+= sonic.o
 OBJS-$(CONFIG_SP5X_DECODER)+= sp5xdec.o
-OBJS-$(CONFIG_SRT_DECODER) += srtdec.o ass.o
+OBJS-$(CONFIG_SRT_DECODER) += srtdec.o ass.o htmlsubtitles.o
 OBJS-$(CONFIG_SRT_ENCODER) += srtenc.o ass_split.o
 OBJS-$(CONFIG_STL_DECODER) += textdec.o ass.o
 OBJS-$(CONFIG_SUBRIP_DECODER)  += srtdec.o ass.o
diff --git a/libavcodec/htmlsubtitles.c b/libavcodec/htmlsubtitles.c
new file mode 100644
index 000..b766130
--- /dev/null
+++ b/libavcodec/htmlsubtitles.c
@@ -0,0 +1,198 @@
+/*
+ *
+ * Copyright (c) 2010  Aurelien Jacobs 
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/avstring.h"
+#include "libavutil/common.h"
+#include "libavutil/parseutils.h"
+#include "ass.h"
+#include "htmlsubtitles.h"
+
+static int html_color_parse(AVCodecContext *avctx, const char *str)
+{
+uint8_t rgba[4];
+if (av_parse_color(rgba, str, strcspn(str, "\" >"), avctx) < 0)
+return -1;
+return rgba[0] | rgba[1] << 8 | rgba[2] << 16;
+}
+
+enum {
+PARAM_UNKNOWN = -1,
+PARAM_SIZE,
+PARAM_COLOR,
+PARAM_FACE,
+PARAM_NUMBER
+};
+
+typedef struct SrtStack {
+char tag[128];
+char param[PARAM_NUMBER][128];
+} SrtStack;
+
+static void rstrip_spaces_buf(AVBPrint *buf)
+{
+while (buf->len > 0 && buf->str[buf->len - 1] == ' ')
+buf->str[--buf->len] = 0;
+}
+
+void ff_htmlmarkup_to_ass(AVCodecContext *avctx, AVBPrint *dst, const char *in)
+{
+char *param, buffer[128], tmp[128];
+int len, tag_close, sptr = 1, line_start = 1, an = 0, end = 0, count;
+SrtStack stack[16];
+
+stack[0].tag[0] = 0;
+strcpy(stack[0].param[PARAM_SIZE],  "{\\fs}");
+strcpy(stack[0].param[PARAM_COLOR], "{\\c}");
+strcpy(stack[0].param[PARAM_FACE],  "{\\fn}");
+
+for (; !end && *in; in++) {
+switch (*in) {
+case '\r':
+break;
+case '\n':
+if (line_start) {
+end = 1;
+break;
+}
+
+/* check if it is end of the paragraph or not*/
+in++;
+count = 1;
+while(*in == ' ') {
+in++;
+count++;
+}
+if (*in == '\0' || *in == '\n'){
+in = in - count;
+break;
+}
+in = in - count;
+
+/*if not the end of the paragraph, add line break */
+rstrip_spaces_buf(dst);
+av_bprintf(dst, "\\N");
+line_start = 1;
+break;
+case ' ':
+if (!line_start)
+av_bprint_chars(dst, *in, 1);
+break;
+case '{':/* skip all {\xxx} substrings except for {\an%d}
+and all microdvd like styles such as {Y:xxx} */
+len = 0;
+an += sscanf(in, "{\\an%*1u}%n", &len) >= 0 && len > 0;
+if ((an != 1 && (len = 0, sscanf(in, "{\\%*[^}]}%n", &len) 

[FFmpeg-devel] [PATCH 3/4] avformat/samidec: fix tag close

2015-08-07 Thread Yayoi
---
 libavformat/samidec.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libavformat/samidec.c b/libavformat/samidec.c
index 948e1ed..bc9b745 100644
--- a/libavformat/samidec.c
+++ b/libavformat/samidec.c
@@ -68,11 +68,17 @@ static int sami_read_header(AVFormatContext *s)
 while (!ff_text_eof(&tr)) {
 AVPacket *sub;
 const int64_t pos = ff_text_pos(&tr) - (c != 0);
-int is_sync, n = ff_smil_extract_next_text_chunk(&tr, &buf, &c);
+int is_sync, is_body, n = ff_smil_extract_next_text_chunk(&tr, &buf, 
&c);
 
 if (n == 0)
 break;
 
+is_body = !av_strncasecmp(buf.str, "http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 4/4] fate reference for samidec

2015-08-07 Thread Yayoi
---
 tests/fate/subtitles.mak |  3 ++
 tests/ref/fate/sub-sami2 | 91 
 2 files changed, 94 insertions(+)
 create mode 100644 tests/ref/fate/sub-sami2

diff --git a/tests/fate/subtitles.mak b/tests/fate/subtitles.mak
index d8b2034..0a6c33d 100644
--- a/tests/fate/subtitles.mak
+++ b/tests/fate/subtitles.mak
@@ -46,6 +46,9 @@ fate-sub-realtext: CMD = fmtstdout ass -i 
$(TARGET_SAMPLES)/sub/RealText_capabil
 FATE_SUBTITLES_ASS-$(call DEMDEC, SAMI, SAMI) += fate-sub-sami
 fate-sub-sami: CMD = fmtstdout ass -i 
$(TARGET_SAMPLES)/sub/SAMI_capability_tester.smi
 
+FATE_SUBTITLES_ASS-$(call DEMDEC, SAMI, SAMI) += fate-sub-sami2
+fate-sub-sami2: CMD = fmtstdout ass -i 
$(TARGET_SAMPLES)/sub/SAMI_ass_capability_tester.smi
+
 FATE_SUBTITLES_ASS-$(call DEMDEC, SRT, SUBRIP) += fate-sub-srt
 fate-sub-srt: CMD = fmtstdout ass -i 
$(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt
 
diff --git a/tests/ref/fate/sub-sami2 b/tests/ref/fate/sub-sami2
new file mode 100644
index 000..5703652
--- /dev/null
+++ b/tests/ref/fate/sub-sami2
@@ -0,0 +1,91 @@
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, 
OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, 
Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, 
MarginV, Encoding
+Style: 
Default,Arial,16,&Hff,&Hff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:01.51,0:00:01.51,Default,,0,0,0,,by Psyence 
Fictionist\npsyencefiction...@gmail.com
+Dialogue: 0,0:00:01.51,0:00:08.61,Default,,0,0,0,,Sync by: honeybunny and 
Kerensky\Nwww.Addic7ed.com
+Dialogue: 0,0:00:10.11,0:00:10.11,Default,,0,0,0,,\N{\b1}사랑과 배신\N탐욕과 살육의 
이야기죠{\b0}
+Dialogue: 
0,0:00:10.11,0:00:13.98,Default,,0,0,0,,\N{\c&H800080&}The{\c}{\c&HCBC0FF&}re{\c}
 {\c&HFF&}is{\c} {\c&HA5FF&}lo{\c}{\c&H&}ve{\c} 
{\c&H8000&}and{\c}{\c&H00&} 
bet{\c}{\c&HFF&}rayal{\c},\N{\b1}{\c&H808080&}g{\c}r{\c&H808080&}e{\c}e{\c&H808080&}d{\c}
 and {\c&HFF&}m{\c}{\c&H808080&}u{\c}{\c&HFF&}rder{\c}{\b0}.
+Dialogue: 0,0:00:17.67,0:00:17.67,Default,,0,0,0,,\N{\c&H&}선악의 정의에 
대해서\N대립하는 가치관을 가진{\c}
+Dialogue: 
0,0:00:17.67,0:00:21.72,Default,,0,0,0,,\N{\c&HCBC0FF&}{\fs6}It's{\fs} 
{\fs8}set{\fs}{\fs10} in {\fs}{\fs12}this{\fs}{\fs14} 
intere{\fs}{\fs14}sting{\fs}\N{\fs16} world{\fs}{\fs18} of{\fs} 
{\fs20}cont{\fs}{\fs22}rasting{\fs}{\fs24} ideology{\fs}{\c}
+Dialogue: 0,0:00:21.84,0:00:21.84,Default,,0,0,0,,\N{\u1}매력적인 세계에서\N이 모든 것이 
펼쳐집니다{\u1}
+Dialogue: 
0,0:00:21.84,0:00:23.58,Default,,0,0,0,,\N{\i1}{\c&H9966CC&}of{\c}{\c&HC2A3E0&} 
what's{\c} {\c&HE0D1F0&}right{\c} {\c&HFCFAFE&}and{\c} wrong.{\i0}
+Dialogue: 0,0:00:23.69,0:00:23.69,Default,,0,0,0,,\N{\i1}이 주제를 심오한 철학으로\N담아내고 
있어요{\i0}
+Dialogue: 
0,0:00:23.69,0:00:25.67,Default,,0,0,0,,\N{\fs20}{\c&HFF&}{\s1}It{\s0}{\c}{\fs}
 has {\fs15}{\c&H00&}a{\c}{\fs} great 
{\fs16}{\c&HFFCC00&}philosophy{\c}{\fs} about it.
+Dialogue: 0,0:00:40.22,0:00:40.22,Default,,0,0,0,,\N{\s1}"왕좌의 게임"은 웨스테로스라는 
가상왕국의\N권력 분쟁 이야기입니다{\s0}
+Dialogue: 0,0:00:40.22,0:00:47.94,Default,,0,0,0,,\N{\c&HA5FF&}{\fs26}"Game of 
Thrones"{\fs}{\c} {\c&H2A2AA5&}{\b1}is{\b0}{\c}{\c&H&}{\fs24}{\i1} 
about{\i0}{\fs}{\c} {\c&H336699&}{\fs14}power{\fs}{\c}{\c&HFF&} 
struggles{\c}\N{\c&HA5FF&}{\fs8}in a fantasy{\fs}{\c&HCBC0FF&} 
kingdom{\c&HA5FF&}, called {\fs6}Westeros.{\fs}{\c}
+Dialogue: 0,0:00:48.06,0:00:48.06,Default,,0,0,0,,\N철의 왕좌를 둘러싼\N권력 분쟁이죠
+Dialogue: 0,0:00:48.06,0:00:50.76,Default,,0,0,0,,\N{\c&H8000&}And it's a 
power struggle\Nfor the Iron Throne,{\c}
+Dialogue: 0,0:00:50.88,0:00:50.88,Default,,0,0,0,,\N{\fs20}왕국의 권력 정점이라고\N할 수 
있는 자리에요{\fs}
+Dialogue: 0,0:00:50.88,0:00:53.13,Default,,0,0,0,,\Nwhich is the seat of 
power\Nin this kingdom.
+Dialogue: 0,0:00:53.25,0:00:53.25,Default,,0,0,0,,\N전운이 감도네, 네드
+Dialogue: 0,0:00:53.25,0:00:55.07,Default,,0,0,0,,\NThere's a war coming, Ned.
+Dialogue: 0,0:00:56.01,0:00:56.01,Default,,0,0,0,,\N\N언제 누구와 싸우게 될지는 몰라\N하지만 
분명 전쟁이 일어날걸세
+Dialogue: 0,0:00:56.01,0:01:00.09,Default,,0,0,0,,\NI don't know when, I don't 
know who\Nwould be fighting, but it's coming.
+Dialogue: 0,0:01:01.10,0:01:01.10,Default,,0,0,0,,\N이야기의 핵심은 두 주요 가문의\N권력을 둘러싼 
갈등입니다
+Dialogue: 0,0:01:01.10,0:01:07.04,Default,,0,0,0,,\N{\i1}At the core of it 
there's a conflict for\Npower between two great houses initially.{\i0}
+Dialogue: 0,0:01:07.16,0:01:07.16,Default,,0,0,0,,\N스타크 가문과 라니스터 가문이죠
+Dialogue: 0,0:01:07.16,0:01:10.04,Default,,0,0,0,,\NHouse Stark and House 
Lannister.
+Dialogue: 0,0:01:10.16,0:01:10.16,Default,,0,0,0,,\N그 외에 여러 가문이\N서로 경쟁합니다
+Dialogue: 0,0:01:10.16,0:01:13.25,Default,,0,0,0,,\NThe other major houses 
are\Nall contenders as well.
+Dialogue: 0,0:01:13.37,0:01:13.37,Default,,0,0,0,,\N흥미진진하게 정치적으로\N얽혀있는 상황이죠
+Dialogue: 0,

Re: [FFmpeg-devel] [PATCH 4/4] fate reference for samidec

2015-08-07 Thread Yayoi Ukai
Hello,

Sorry, I didn't mean to spam the mailing list...I noticed that commit
message was not quite right.. Sample file is attached for this
reference. (again) And besides these messages (title on these previous
3 email), nothing is changed from previous patches.

Thank you for reviewing and have a super wonderful day!!
Yayoi

On Fri, Aug 7, 2015 at 11:03 PM, Yayoi  wrote:
> ---
>  tests/fate/subtitles.mak |  3 ++
>  tests/ref/fate/sub-sami2 | 91 
> 
>  2 files changed, 94 insertions(+)
>  create mode 100644 tests/ref/fate/sub-sami2
>
> diff --git a/tests/fate/subtitles.mak b/tests/fate/subtitles.mak
> index d8b2034..0a6c33d 100644
> --- a/tests/fate/subtitles.mak
> +++ b/tests/fate/subtitles.mak
> @@ -46,6 +46,9 @@ fate-sub-realtext: CMD = fmtstdout ass -i 
> $(TARGET_SAMPLES)/sub/RealText_capabil
>  FATE_SUBTITLES_ASS-$(call DEMDEC, SAMI, SAMI) += fate-sub-sami
>  fate-sub-sami: CMD = fmtstdout ass -i 
> $(TARGET_SAMPLES)/sub/SAMI_capability_tester.smi
>
> +FATE_SUBTITLES_ASS-$(call DEMDEC, SAMI, SAMI) += fate-sub-sami2
> +fate-sub-sami2: CMD = fmtstdout ass -i 
> $(TARGET_SAMPLES)/sub/SAMI_ass_capability_tester.smi
> +
>  FATE_SUBTITLES_ASS-$(call DEMDEC, SRT, SUBRIP) += fate-sub-srt
>  fate-sub-srt: CMD = fmtstdout ass -i 
> $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt
>
> diff --git a/tests/ref/fate/sub-sami2 b/tests/ref/fate/sub-sami2
> new file mode 100644
> index 000..5703652
> --- /dev/null
> +++ b/tests/ref/fate/sub-sami2
> @@ -0,0 +1,91 @@
> +[Script Info]
> +; Script generated by FFmpeg/Lavc
> +ScriptType: v4.00+
> +PlayResX: 384
> +PlayResY: 288
> +
> +[V4+ Styles]
> +Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, 
> OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, 
> ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, 
> MarginR, MarginV, Encoding
> +Style: 
> Default,Arial,16,&Hff,&Hff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
> +
> +[Events]
> +Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, 
> Text
> +Dialogue: 0,0:00:01.51,0:00:01.51,Default,,0,0,0,,by Psyence 
> Fictionist\npsyencefiction...@gmail.com
> +Dialogue: 0,0:00:01.51,0:00:08.61,Default,,0,0,0,,Sync by: honeybunny and 
> Kerensky\Nwww.Addic7ed.com
> +Dialogue: 0,0:00:10.11,0:00:10.11,Default,,0,0,0,,\N{\b1}사랑과 배신\N탐욕과 살육의 
> 이야기죠{\b0}
> +Dialogue: 
> 0,0:00:10.11,0:00:13.98,Default,,0,0,0,,\N{\c&H800080&}The{\c}{\c&HCBC0FF&}re{\c}
>  {\c&HFF&}is{\c} {\c&HA5FF&}lo{\c}{\c&H&}ve{\c} 
> {\c&H8000&}and{\c}{\c&H00&} 
> bet{\c}{\c&HFF&}rayal{\c},\N{\b1}{\c&H808080&}g{\c}r{\c&H808080&}e{\c}e{\c&H808080&}d{\c}
>  and {\c&HFF&}m{\c}{\c&H808080&}u{\c}{\c&HFF&}rder{\c}{\b0}.
> +Dialogue: 0,0:00:17.67,0:00:17.67,Default,,0,0,0,,\N{\c&H&}선악의 정의에 
> 대해서\N대립하는 가치관을 가진{\c}
> +Dialogue: 
> 0,0:00:17.67,0:00:21.72,Default,,0,0,0,,\N{\c&HCBC0FF&}{\fs6}It's{\fs} 
> {\fs8}set{\fs}{\fs10} in {\fs}{\fs12}this{\fs}{\fs14} 
> intere{\fs}{\fs14}sting{\fs}\N{\fs16} world{\fs}{\fs18} of{\fs} 
> {\fs20}cont{\fs}{\fs22}rasting{\fs}{\fs24} ideology{\fs}{\c}
> +Dialogue: 0,0:00:21.84,0:00:21.84,Default,,0,0,0,,\N{\u1}매력적인 세계에서\N이 모든 것이 
> 펼쳐집니다{\u1}
> +Dialogue: 
> 0,0:00:21.84,0:00:23.58,Default,,0,0,0,,\N{\i1}{\c&H9966CC&}of{\c}{\c&HC2A3E0&}
>  what's{\c} {\c&HE0D1F0&}right{\c} {\c&HFCFAFE&}and{\c} wrong.{\i0}
> +Dialogue: 0,0:00:23.69,0:00:23.69,Default,,0,0,0,,\N{\i1}이 주제를 심오한 
> 철학으로\N담아내고 있어요{\i0}
> +Dialogue: 
> 0,0:00:23.69,0:00:25.67,Default,,0,0,0,,\N{\fs20}{\c&HFF&}{\s1}It{\s0}{\c}{\fs}
>  has {\fs15}{\c&H00&}a{\c}{\fs} great 
> {\fs16}{\c&HFFCC00&}philosophy{\c}{\fs} about it.
> +Dialogue: 0,0:00:40.22,0:00:40.22,Default,,0,0,0,,\N{\s1}"왕좌의 게임"은 웨스테로스라는 
> 가상왕국의\N권력 분쟁 이야기입니다{\s0}
> +Dialogue: 0,0:00:40.22,0:00:47.94,Default,,0,0,0,,\N{\c&HA5FF&}{\fs26}"Game 
> of Thrones"{\fs}{\c} {\c&H2A2AA5&}{\b1}is{\b0}{\c}{\c&H&}{\fs24}{\i1} 
> about{\i0}{\fs}{\c} {\c&H336699&}{\fs14}power{\fs}{\c}{\c&HFF&} 
> struggles{\c}\N{\c&HA5FF&}{\fs8}in a fantasy{\fs}{\c&HCBC0FF&} 
> kingdom{\c&HA5FF&}, called {\fs6}Westeros.{\fs}{\c}
> +Dialogue: 0,0:00:48.06,0:00:48.06,Default,,0,0,0,,\N철의 왕좌를 둘러싼\N권력 분쟁이죠
> +Dialogue: 0,0:00:48.06,0:00:50.76,Default,,0,0,0,,\N{\c&H8000&}And it's a 
> power struggle\Nfor the Iron Throne,{\c}
> +Dialogue: 0,0:00:50.88,0:00:50.88,Default,,0,0,0,,\N{\fs20}왕국의 권력 정점이라고\N할 수 
> 있는 자리에요{\fs}
> +Dialogue: 0,0:00:50.88,0:00:53.13,Default,,0,0,0,,\Nwhich is the seat of 
> power\Nin this kingdom.
> +Dialogue: 0,0:00:53.25,0:00:53.25,Default,,0,0,0,,\N전운이 감도네, 네드
> +Dialogue: 0,0:00:53.25,0:00:55.07,Default,,0,0,0,,\NThere's a war coming, 
> Ned.
> +Dialogue: 0,0:00:56.01,0:00:56.01,Default,,0,0,0,,\N\N언제 누구와 싸우게 될지는 몰라\N하지만 
> 분명 전쟁이 일어날걸세
> +Dialogue: 0,0:00:56.01,0:01:00.09,Default,,0,0,0,,\NI don't know when, I 
> don't know who\Nwould be fighting, but it's coming.
> +Dialogue: 0,0:01:01.10,0:01:01.10,Default,,0,0,0,,\N이야기의 핵심은 두 주요 가문의\N권력을 
> 둘러싼 갈등입니다
>