Re: [FFmpeg-devel] [PATCH] Factorize avpriv_mirror() out

2015-01-03 Thread James Almer
On 04/01/15 12:32 AM, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer 
> ---
>  libavcodec/dirac_dwt.c |   30 +++
>  libavcodec/snow_dwt.c  |   70 
> +++-
>  libavfilter/transform.c|   14 ++---
>  libavfilter/vf_owdenoise.c |   17 +++
>  libavfilter/vf_sab.c   |   19 ++--
>  libavutil/common.h |   14 +
>  6 files changed, 63 insertions(+), 101 deletions(-)

libavutil/common.h is an installed header. Wouldn't it make more sense to use 
the av_ 
prefix like every other function above this one?
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] Factorize avpriv_mirror() out

2015-01-03 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavcodec/dirac_dwt.c |   30 +++
 libavcodec/snow_dwt.c  |   70 +++-
 libavfilter/transform.c|   14 ++---
 libavfilter/vf_owdenoise.c |   17 +++
 libavfilter/vf_sab.c   |   19 ++--
 libavutil/common.h |   14 +
 6 files changed, 63 insertions(+), 101 deletions(-)

diff --git a/libavcodec/dirac_dwt.c b/libavcodec/dirac_dwt.c
index 96d8bae..da2da75 100644
--- a/libavcodec/dirac_dwt.c
+++ b/libavcodec/dirac_dwt.c
@@ -26,16 +26,6 @@
 #include "libavcodec/x86/dirac_dwt.h"
 
 
-static inline int mirror(int v, int m)
-{
-while ((unsigned)v > (unsigned)m) {
-v = -v;
-if (v < 0)
-v += 2 * m;
-}
-return v;
-}
-
 static void vertical_compose53iL0(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2,
   int width)
 {
@@ -307,8 +297,8 @@ static void spatial_compose_dirac53i_dy(DWTContext *d, int 
level, int width, int
 
 int y= cs->y;
 IDWTELEM *b[4] = { cs->b[0], cs->b[1] };
-b[2] = d->buffer + mirror(y+1, height-1)*stride;
-b[3] = d->buffer + mirror(y+2, height-1)*stride;
+b[2] = d->buffer + avpriv_mirror(y+1, height-1)*stride;
+b[3] = d->buffer + avpriv_mirror(y+2, height-1)*stride;
 
 if(y+1<(unsigned)height) vertical_compose_l0(b[1], b[2], b[3], width);
 if(y+0<(unsigned)height) vertical_compose_h0(b[0], b[1], b[2], width);
@@ -400,8 +390,8 @@ static void spatial_compose_daub97i_dy(DWTContext *d, int 
level, int width, int
 IDWTELEM *b[6];
 for (i = 0; i < 4; i++)
 b[i] = cs->b[i];
-b[4] = d->buffer + mirror(y+3, height-1)*stride;
-b[5] = d->buffer + mirror(y+4, height-1)*stride;
+b[4] = d->buffer + avpriv_mirror(y+3, height-1)*stride;
+b[5] = d->buffer + avpriv_mirror(y+4, height-1)*stride;
 
 if(y+3<(unsigned)height) vertical_compose_l1(b[3], b[4], b[5], width);
 if(y+2<(unsigned)height) vertical_compose_h1(b[2], b[3], b[4], width);
@@ -419,17 +409,17 @@ static void spatial_compose_daub97i_dy(DWTContext *d, int 
level, int width, int
 
 static void spatial_compose97i_init2(DWTCompose *cs, IDWTELEM *buffer, int 
height, int stride)
 {
-cs->b[0] = buffer + mirror(-3-1, height-1)*stride;
-cs->b[1] = buffer + mirror(-3  , height-1)*stride;
-cs->b[2] = buffer + mirror(-3+1, height-1)*stride;
-cs->b[3] = buffer + mirror(-3+2, height-1)*stride;
+cs->b[0] = buffer + avpriv_mirror(-3-1, height-1)*stride;
+cs->b[1] = buffer + avpriv_mirror(-3  , height-1)*stride;
+cs->b[2] = buffer + avpriv_mirror(-3+1, height-1)*stride;
+cs->b[3] = buffer + avpriv_mirror(-3+2, height-1)*stride;
 cs->y = -3;
 }
 
 static void spatial_compose53i_init2(DWTCompose *cs, IDWTELEM *buffer, int 
height, int stride)
 {
-cs->b[0] = buffer + mirror(-1-1, height-1)*stride;
-cs->b[1] = buffer + mirror(-1  , height-1)*stride;
+cs->b[0] = buffer + avpriv_mirror(-1-1, height-1)*stride;
+cs->b[1] = buffer + avpriv_mirror(-1  , height-1)*stride;
 cs->y = -1;
 }
 
diff --git a/libavcodec/snow_dwt.c b/libavcodec/snow_dwt.c
index 986a6b9..ecba0ea 100644
--- a/libavcodec/snow_dwt.c
+++ b/libavcodec/snow_dwt.c
@@ -112,16 +112,6 @@ void ff_slice_buffer_destroy(slice_buffer *buf)
 av_freep(&buf->line);
 }
 
-static inline int mirror(int v, int m)
-{
-while ((unsigned)v > (unsigned)m) {
-v = -v;
-if (v < 0)
-v += 2 * m;
-}
-return v;
-}
-
 static av_always_inline void lift(DWTELEM *dst, DWTELEM *src, DWTELEM *ref,
   int dst_step, int src_step, int ref_step,
   int width, int mul, int add, int shift,
@@ -223,12 +213,12 @@ static void spatial_decompose53i(DWTELEM *buffer, DWTELEM 
*temp,
  int width, int height, int stride)
 {
 int y;
-DWTELEM *b0 = buffer + mirror(-2 - 1, height - 1) * stride;
-DWTELEM *b1 = buffer + mirror(-2, height - 1) * stride;
+DWTELEM *b0 = buffer + avpriv_mirror(-2 - 1, height - 1) * stride;
+DWTELEM *b1 = buffer + avpriv_mirror(-2, height - 1) * stride;
 
 for (y = -2; y < height; y += 2) {
-DWTELEM *b2 = buffer + mirror(y + 1, height - 1) * stride;
-DWTELEM *b3 = buffer + mirror(y + 2, height - 1) * stride;
+DWTELEM *b2 = buffer + avpriv_mirror(y + 1, height - 1) * stride;
+DWTELEM *b3 = buffer + avpriv_mirror(y + 2, height - 1) * stride;
 
 if (y + 1 < (unsigned)height)
 horizontal_decompose53i(b2, temp, width);
@@ -296,14 +286,14 @@ static void spatial_decompose97i(DWTELEM *buffer, DWTELEM 
*temp,
  int width, int height, int stride)
 {
 int y;
-DWTELEM *b0 = buffer + mirror(-4 - 1, height - 1) * stride;
-DWTELEM *b1 = buffer + mirror(-4, height - 1) * stride;
-DWTELEM *b2 = buffer + mirror(-4 + 1, height - 1) * strid

[FFmpeg-devel] [PATCH 1/2] libavfilter/unsharp opencl optimization

2015-01-03 Thread Alexey Titov
From: atitov 

---
 libavfilter/unsharp.h   |   4 ++
 libavfilter/unsharp_opencl.c|  74 +++---
 libavfilter/unsharp_opencl_kernel.h | 122 ++--
 3 files changed, 145 insertions(+), 55 deletions(-)

diff --git a/libavfilter/unsharp.h b/libavfilter/unsharp.h
index c2aed64..fc651c0 100644
--- a/libavfilter/unsharp.h
+++ b/libavfilter/unsharp.h
@@ -41,6 +41,10 @@ typedef struct {
 cl_kernel kernel_chroma;
 cl_mem cl_luma_mask;
 cl_mem cl_chroma_mask;
+cl_mem cl_luma_mask_x;
+cl_mem cl_chroma_mask_x;
+cl_mem cl_luma_mask_y;
+cl_mem cl_chroma_mask_y;
 int in_plane_size[8];
 int out_plane_size[8];
 int plane_num;
diff --git a/libavfilter/unsharp_opencl.c b/libavfilter/unsharp_opencl.c
index 5c6b5ef..1923cb3 100644
--- a/libavfilter/unsharp_opencl.c
+++ b/libavfilter/unsharp_opencl.c
@@ -87,11 +87,12 @@ end:
 return ret;
 }
 
-static int compute_mask_matrix(cl_mem cl_mask_matrix, int step_x, int step_y)
+static int copy_separable_masks(cl_mem cl_mask_x, cl_mem cl_mask_y, int 
step_x, int step_y)
 {
-int i, j, ret = 0;
-uint32_t *mask_matrix, *mask_x, *mask_y;
-size_t size_matrix = sizeof(uint32_t) * (2 * step_x + 1) * (2 * step_y + 
1);
+int ret = 0;
+uint32_t *mask_x, *mask_y;
+size_t size_mask_x = sizeof(uint32_t) * (2 * step_x + 1);
+size_t size_mask_y = sizeof(uint32_t) * (2 * step_y + 1);
 mask_x = av_mallocz_array(2 * step_x + 1, sizeof(uint32_t));
 if (!mask_x) {
 ret = AVERROR(ENOMEM);
@@ -102,37 +103,33 @@ static int compute_mask_matrix(cl_mem cl_mask_matrix, int 
step_x, int step_y)
 ret = AVERROR(ENOMEM);
 goto end;
 }
-mask_matrix = av_mallocz(size_matrix);
-if (!mask_matrix) {
-ret = AVERROR(ENOMEM);
-goto end;
-}
 ret = compute_mask(step_x, mask_x);
 if (ret < 0)
 goto end;
 ret = compute_mask(step_y, mask_y);
 if (ret < 0)
 goto end;
-for (j = 0; j < 2 * step_y + 1; j++) {
-for (i = 0; i < 2 * step_x + 1; i++) {
-mask_matrix[i + j * (2 * step_x + 1)] = mask_y[j] * mask_x[i];
-}
-}
-ret = av_opencl_buffer_write(cl_mask_matrix, (uint8_t *)mask_matrix, 
size_matrix);
+ret = av_opencl_buffer_write(cl_mask_x, (uint8_t *)mask_x, size_mask_x);
+ret = av_opencl_buffer_write(cl_mask_y, (uint8_t *)mask_y, size_mask_y);
 end:
 av_freep(&mask_x);
 av_freep(&mask_y);
-av_freep(&mask_matrix);
 return ret;
 }
 
 static int generate_mask(AVFilterContext *ctx)
 {
-UnsharpContext *unsharp = ctx->priv;
-int i, ret = 0, step_x[2], step_y[2];
+cl_mem masks[4];
 cl_mem mask_matrix[2];
+int i, ret = 0, step_x[2], step_y[2];
+
+UnsharpContext *unsharp = ctx->priv;
 mask_matrix[0] = unsharp->opencl_ctx.cl_luma_mask;
 mask_matrix[1] = unsharp->opencl_ctx.cl_chroma_mask;
+masks[0] = unsharp->opencl_ctx.cl_luma_mask_x;
+masks[1] = unsharp->opencl_ctx.cl_luma_mask_y;
+masks[2] = unsharp->opencl_ctx.cl_chroma_mask_x;
+masks[3] = unsharp->opencl_ctx.cl_chroma_mask_y;
 step_x[0] = unsharp->luma.steps_x;
 step_x[1] = unsharp->chroma.steps_x;
 step_y[0] = unsharp->luma.steps_y;
@@ -144,12 +141,16 @@ static int generate_mask(AVFilterContext *ctx)
 else
 unsharp->opencl_ctx.use_fast_kernels = 1;
 
+if (!masks[0] || !masks[1] || !masks[2] || !masks[3]) {
+av_log(ctx, AV_LOG_ERROR, "Luma mask and chroma mask should not be 
NULL\n");
+return AVERROR(EINVAL);
+}
 if (!mask_matrix[0] || !mask_matrix[1]) {
 av_log(ctx, AV_LOG_ERROR, "Luma mask and chroma mask should not be 
NULL\n");
 return AVERROR(EINVAL);
 }
 for (i = 0; i < 2; i++) {
-ret = compute_mask_matrix(mask_matrix[i], step_x[i], step_y[i]);
+ret = copy_separable_masks(masks[2*i], masks[2*i+1], step_x[i], 
step_y[i]);
 if (ret < 0)
 return ret;
 }
@@ -184,7 +185,8 @@ int ff_opencl_apply_unsharp(AVFilterContext *ctx, AVFrame 
*in, AVFrame *out)
 ret = avpriv_opencl_set_parameter(&kernel1,
   
FF_OPENCL_PARAM_INFO(unsharp->opencl_ctx.cl_inbuf),
   
FF_OPENCL_PARAM_INFO(unsharp->opencl_ctx.cl_outbuf),
-  
FF_OPENCL_PARAM_INFO(unsharp->opencl_ctx.cl_luma_mask),
+  
FF_OPENCL_PARAM_INFO(unsharp->opencl_ctx.cl_luma_mask_x),
+  
FF_OPENCL_PARAM_INFO(unsharp->opencl_ctx.cl_luma_mask_y),
   
FF_OPENCL_PARAM_INFO(unsharp->luma.amount),
   
FF_OPENCL_PARAM_INFO(unsharp->luma.scalebits),
   
FF_OPENCL_PARAM_INFO(unsharp->luma.halfscale),
@@ -201,7 +203,8 @@ int ff_opencl_apply_unsharp(AVFilterContext *ctx, AVFrame 
*in, AVFrame *out)
 ret 

[FFmpeg-devel] [PATCH] avformat/aiffdec: only read codec tag when header size is ample

2015-01-03 Thread Peter Ross
Signed-off-by: Peter Ross 
---
 libavformat/aiffdec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
index 91ef2a4..6271c3d 100644
--- a/libavformat/aiffdec.c
+++ b/libavformat/aiffdec.c
@@ -116,13 +116,13 @@ static unsigned int get_aiff_header(AVFormatContext *s, 
int size,
 size -= 18;
 
 /* get codec id for AIFF-C */
-if (version == AIFF_C_VERSION1) {
+if (version == AIFF_C_VERSION1 && size >= 4) {
 codec->codec_tag = avio_rl32(pb);
 codec->codec_id  = ff_codec_get_id(ff_codec_aiff_tags, 
codec->codec_tag);
 size -= 4;
 }
 
-if (version != AIFF_C_VERSION1 || codec->codec_id == 
AV_CODEC_ID_PCM_S16BE) {
+if (version != AIFF_C_VERSION1 || size < 4 || codec->codec_id == 
AV_CODEC_ID_PCM_S16BE) {
 codec->codec_id = aiff_codec_get_id(codec->bits_per_coded_sample);
 codec->bits_per_coded_sample = av_get_bits_per_sample(codec->codec_id);
 aiff->block_duration = 1;
-- 
2.1.0

-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)


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


Re: [FFmpeg-devel] [PATCH] x86/flacdsp: remove unneeded ifdeffery

2015-01-03 Thread James Almer
On 29/12/14 5:05 PM, James Almer wrote:
> x86inc can translate r*m into a register or stack on its own
> 
> Signed-off-by: James Almer 
> ---
>  libavcodec/x86/flacdsp.asm | 18 +++---
>  1 file changed, 3 insertions(+), 15 deletions(-)

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


[FFmpeg-devel] [PATCH 2/2] avformat/flvdec: Add flv_trustheader option

2015-01-03 Thread Michael Niedermayer
This allows the 1 byte header to be ignored
Fixes creation of an empty audio stream

Found-by: cousin_luigi
Signed-off-by: Michael Niedermayer 
---
 libavformat/flvdec.c |7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 572268f..faf7885 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -42,6 +42,7 @@
 typedef struct {
 const AVClass *class; ///< Class for private options.
 int trust_metadata;   ///< configure streams according onMetaData
+int trust_header;
 int wrong_dts;///< wrong dts due to negative cts
 uint8_t *new_extradata[FLV_STREAM_TYPE_NB];
 int new_extradata_size[FLV_STREAM_TYPE_NB];
@@ -597,6 +598,7 @@ static int flv_read_metabody(AVFormatContext *s, int64_t 
next_pos)
 
 static int flv_read_header(AVFormatContext *s)
 {
+FLVContext *flv = s->priv_data;
 int offset, flags;
 
 avio_skip(s->pb, 4);
@@ -604,10 +606,10 @@ static int flv_read_header(AVFormatContext *s)
 
 s->ctx_flags |= AVFMTCTX_NOHEADER;
 
-if (flags & FLV_HEADER_FLAG_HASVIDEO)
+if (flv->trust_header && (flags & FLV_HEADER_FLAG_HASVIDEO))
 if (!create_stream(s, AVMEDIA_TYPE_VIDEO))
 return AVERROR(ENOMEM);
-if (flags & FLV_HEADER_FLAG_HASAUDIO)
+if (flv->trust_header && (flags & FLV_HEADER_FLAG_HASAUDIO))
 if (!create_stream(s, AVMEDIA_TYPE_AUDIO))
 return AVERROR(ENOMEM);
 // Flag doesn't indicate whether or not there is script-data present. Must
@@ -1063,6 +1065,7 @@ static int flv_read_seek(AVFormatContext *s, int 
stream_index,
 #define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
 static const AVOption options[] = {
 { "flv_metadata", "Allocate streams according to the onMetaData array", 
OFFSET(trust_metadata), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VD },
+{ "flv_trustheader", "Ignore 1byte header indicating the existence of A/V 
streams", OFFSET(trust_header), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VD },
 { NULL }
 };
 
-- 
1.7.9.5

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


[FFmpeg-devel] [PATCH 1/2] avformat/flvenc: omit more metadata elements which specific meaning

2015-01-03 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavformat/flvenc.c |8 
 1 file changed, 8 insertions(+)

diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 5468c4d..eb4c088 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -288,6 +288,14 @@ static void write_metadata(AVFormatContext *s, unsigned 
int ts)
 ||!strcmp(tag->key, "audiocodecid")
 ||!strcmp(tag->key, "duration")
 ||!strcmp(tag->key, "onMetaData")
+||!strcmp(tag->key, "datasize")
+||!strcmp(tag->key, "lasttimestamp")
+||!strcmp(tag->key, "totalframes")
+||!strcmp(tag->key, "hasAudio")
+||!strcmp(tag->key, "hasVideo")
+||!strcmp(tag->key, "hasCuePoints")
+||!strcmp(tag->key, "hasMetadata")
+||!strcmp(tag->key, "hasKeframes")
 ){
 av_log(s, AV_LOG_DEBUG, "Ignoring metadata for %s\n", tag->key);
 continue;
-- 
1.7.9.5

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


Re: [FFmpeg-devel] [PATCH 2/2] Adding closed caption decoder

2015-01-03 Thread Michael Niedermayer
On Sat, Jan 03, 2015 at 12:57:04PM +0530, Anshul wrote:
> On 01/03/2015 01:42 AM, Michael Niedermayer wrote:
> > On Wed, Dec 31, 2014 at 07:09:33PM +0530, Anshul wrote:
[..]
>  Makefile   |1 
>  allcodecs.c|1 
>  ccaption_dec.c |  361 
> +
>  3 files changed, 363 insertions(+)
> 54d4896ef8724994e1022eec6a9c79d0cddec29d  
> 0001-Adding-Closed-caption-Support.patch
> From 17a564409b84fc18293833cc3f2151792209bb8b Mon Sep 17 00:00:00 2001
> From: Anshul Maheshwari 
> Date: Sat, 3 Jan 2015 12:40:35 +0530
> Subject: [PATCH 1/2] Adding Closed caption Support
> 
> Signed-off-by: Anshul Maheshwari 
> 
> To test Closed caption use following command
> /ffmpeg -f lavfi -i 
> "movie=/home/a141982112/test_videos/Starship_Troopers.vob[out0+subcc]" -map s 
> some.srt
> ---
>  libavcodec/Makefile   |   1 +
>  libavcodec/allcodecs.c|   1 +
>  libavcodec/ccaption_dec.c | 361 
> ++
>  3 files changed, 363 insertions(+)
>  create mode 100644 libavcodec/ccaption_dec.c
> 
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 107661b..33051c4 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -173,6 +173,7 @@ OBJS-$(CONFIG_BRENDER_PIX_DECODER) += brenderpix.o
>  OBJS-$(CONFIG_C93_DECODER) += c93.o
>  OBJS-$(CONFIG_CAVS_DECODER)+= cavs.o cavsdec.o cavsdsp.o \
>cavsdata.o mpeg12data.o
> +OBJS-$(CONFIG_CCAPTION_DECODER)+= ccaption_dec.o
>  OBJS-$(CONFIG_CDGRAPHICS_DECODER)  += cdgraphics.o
>  OBJS-$(CONFIG_CDXL_DECODER)+= cdxl.o
>  OBJS-$(CONFIG_CINEPAK_DECODER) += cinepak.o
> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
> index 8ceee2f..ef77dec 100644
> --- a/libavcodec/allcodecs.c
> +++ b/libavcodec/allcodecs.c
> @@ -481,6 +481,7 @@ void avcodec_register_all(void)
>  /* subtitles */
>  REGISTER_ENCDEC (SSA,   ssa);
>  REGISTER_ENCDEC (ASS,   ass);
> +REGISTER_DECODER(CCAPTION,  ccaption);
>  REGISTER_ENCDEC (DVBSUB,dvbsub);
>  REGISTER_ENCDEC (DVDSUB,dvdsub);
>  REGISTER_DECODER(JACOSUB,   jacosub);
> diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c
> new file mode 100644
> index 000..d351efe
> --- /dev/null
> +++ b/libavcodec/ccaption_dec.c
> @@ -0,0 +1,361 @@
> +/*
> + * Closed Caption Decoding
> + * Copyright (c) 2014 Anshul Maheshwari
> + *
> + * 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 "avcodec.h"
> +#include "ass.h"
> +#include "libavutil/opt.h"
> +
> +#undef CHAR_DEBUG
> +#define SCREEN_ROWS 15
> +#define SCREEN_COLUMNS 32
> +
> +#define SET_FLAG(var, val) ( var |= ( 1 << (val) ) )
> +#define UNSET_FLAG(var, val) ( var &=  ~( 1 << (val)) )
> +#define CHECK_FLAG(var, val) ( (var) & (1 << (val) ) )
> +
> +enum cc_mode {
> +CCMODE_POPON,
> +CCMODE_PAINTON,
> +CCMODE_ROLLUP_2,
> +CCMODE_ROLLUP_3,
> +CCMODE_ROLLUP_4,
> +CCMODE_TEXT,
> +};
> +
> +struct Screen {
> +/* +1 is used to compensate null character of string */
> +uint8_t characters[SCREEN_ROWS][SCREEN_COLUMNS+1];

> +/*
> + * Bitmask of used rows; if a bit is not set, the
> + * corresponding row is not used.
> + * for setting row 1  use row | (0 << 1)
> + * for setting row 15 use row | (1 << 14)
> + */
> +int16_t  row_used;

you can use an array here, this would simplify the code and also
avoid the *_FLAG macros


> +};
> +
> +
> +typedef struct CCaptionSubContext {
> +AVClass *class;

> +int parity_table[256];

this can be a static uint8_t table


> +int row_cnt;
> +struct Screen screen[2];
> +int active_screen;
> +uint8_t cursor_row;
> +uint8_t cursor_column;
> +AVBPrint buffer;
> +int erase_display_memory;
> +int rollup;
> +enum  cc_mode mode;
> +int64_t start_time;
> +/* visible screen time */
> +int64_t startv_time;
> +int64_t end_time;
> +char prev_cmd[2];

> +/* buffer to store pkt data */
> +AVBufferRef *pktbuf;

as you memcopy the data each time, theres no need for a AVBufferRef
a simple 

Re: [FFmpeg-devel] [PATCH] tests/regression-funcs: Remove hardcoded therads 1

2015-01-03 Thread Michael Niedermayer
On Wed, Dec 31, 2014 at 11:10:09AM +0100, Clément Bœsch wrote:
> > Subject: Re: [FFmpeg-devel] [PATCH] tests/regression-funcs: Remove 
> > hardcoded therads 1
> 
> threads*

fixed


> 
> On Tue, Dec 23, 2014 at 03:38:12AM +0100, Michael Niedermayer wrote:
> > The tests which use encoders which either use slices or store the encoder 
> > thread count
> > keep a hardcoded value of 1
> > 
> 
> You might want to mention that it will at least help testing threading
> with the filters, which seems currently untested in various cases because
> of it.

added


> 
> > Found-by: ubitux
> > Signed-off-by: Michael Niedermayer 
> > ---
> >  tests/lavf-regression.sh  |   28 ++--
> >  tests/regression-funcs.sh |2 +-
> >  2 files changed, 15 insertions(+), 15 deletions(-)
> > 
> 
> Fine with me if it works.

applied

thx

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.


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


Re: [FFmpeg-devel] [PATCH 1/2] lavd/v4l2: implement list device callback

2015-01-03 Thread Giorgio Vazzana
2015-01-03 4:45 GMT+01:00 Lukasz Marek :
> On 21 December 2014 at 23:39, Lukasz Marek  wrote:
>
>> On 21.12.2014 22:43, Lukasz Marek wrote:
>>
>>> Signed-off-by: Lukasz Marek 
>>> ---
>>>   libavdevice/v4l2.c | 58 ++
>>> 
>>>   1 file changed, 58 insertions(+)
>>>
>>> diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
>>> index 2969980..9d4d7ae 100644
>>> --- a/libavdevice/v4l2.c
>>> +++ b/libavdevice/v4l2.c
>>> @@ -1006,6 +1006,63 @@ static int v4l2_read_close(AVFormatContext *ctx)
>>>   return 0;
>>>   }
>>>
>>> +static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList
>>> *device_list)
>>> +{
>>> +struct video_data *s = ctx->priv_data;
>>> +AVDeviceInfo *device = NULL;
>>> +struct v4l2_capability cap;
>>> +int i, ret = 0;
>>> +
>>> +if (!device_list)
>>> +return AVERROR(EINVAL);
>>> +
>>> +for (i = 0; i <= 31; i++) {
>>> +snprintf(ctx->filename, sizeof(ctx->filename), "/dev/video%d",
>>> i);
>>>
>>
>> I wasn't sure this is correct. I changed this loop to opendir/readdir -
>> similar way v4l-utils does.
>>
>> ping on patchset

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


Re: [FFmpeg-devel] [PATCH] web/contact: Suggest that patch authors subscribe to ffmpeg-devel

2015-01-03 Thread Michael Niedermayer
On Fri, Jan 02, 2015 at 11:36:24AM -0900, Lou Logan wrote:
> On Fri, 2 Jan 2015 11:35:08 -0900, Lou Logan wrote:
> 
> > On Thu,  1 Jan 2015 20:54:43 +0100, Michael Niedermayer wrote:
> > 
> > > ---
> > >  src/contact |3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/src/contact b/src/contact
> > > index 130addf..7233806 100644
> > > --- a/src/contact
> > > +++ b/src/contact
> > > @@ -35,7 +35,8 @@
> > >   > > href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel/";>
> > >ffmpeg-devel
> > >For discussions involving development of FFmpeg. Patches for 
> > > FFmpeg should be submitted
> > > -  here. It is not for development of software 
> > > that use the FFmpeg libraries
> > > +  here. Make sure you are subsribed so you will receive comments 
> > > and reviews for your
> 
> subsribed/subscribed

changed


> 
> > > +  patches. It is not for development of 
> > > software that use the FFmpeg libraries
> > >and not for bug reports unless you are 
> > > submitting a patch that fixes the
> > >problem.
> > >  
> > 
> > LGTM
> 
> Now LGTM.

applied

thx

[...]

--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Avoid a single point of failure, be that a person or equipment.


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


Re: [FFmpeg-devel] [PATCH]Only enable xcb-shm if error fields are available in the header

2015-01-03 Thread Clément Bœsch
On Sat, Dec 27, 2014 at 09:47:17PM +, Carl Eugen Hoyos wrote:
> Clément Bœsch  pkh.me> writes:
> 
> > > No objections from me: I cannot test atm but I 
> > > suspect this should work.
> > 
> > I won't push an untested patch like this.
> 
> Does compilation with xcb-shm work for you with the 
> patch applied? If yes, please apply.
> (libxcb is ancient on my current system.)
> 

Applied with a check done a bit earlier.

-- 
Clément B.


pgp6CzCrSapdV.pgp
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel