Re: [libav-devel] [PATCH] indeo2: rename stride to pitch for consistency with other Indeo decoders

2014-06-26 Thread Kostya Shishkov
On Thu, Jun 26, 2014 at 12:15:36AM +0200, Diego Biurrun wrote:
 On Wed, Jun 25, 2014 at 08:29:29PM +0200, Kostya Shishkov wrote:
  ---
   libavcodec/indeo2.c |   16 
   1 file changed, 8 insertions(+), 8 deletions(-)
 
 I strongly vote for my patch instead to have things more, not less,
 consistent across the codebase.  You trolled me into whipping it up,
 now accept it ;-p

No, your patch is to have things less, not more.
I prefer to have some variety inside codebase, otherwise it will end like
Soviet army where they painted grass green in order to conform with
regulations.

Of course having complete chaos is not good but not being able to name
variables in the way you prefer would be too sad.

P.S. Your patch sucks because it should rename both stride and pitch to
linesize for real consistency.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 4/4] dcadec: Support for xll (lossless extension)

2014-06-26 Thread Niels Möller
ni...@lysator.liu.se (Niels Möller) writes:

 Builds on top of changes by Paul B Mahol one...@gmail.com, copied
 from the ffmpeg branch at
 https://github.com/richardpl/FFmpeg/commits/xll. In particular, new
 xll-related state variables, and the current function
 dca_xll_decode_header is an expanded version of Paul's
 dca_xll_decode_frame.

 Signed-off-by: Niels Möller ni...@southpole.se

Ping?

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH] indeo2: rename stride to pitch for consistency with other Indeo decoders

2014-06-26 Thread Luca Barbato
On 26/06/14 00:15, Diego Biurrun wrote:
 On Wed, Jun 25, 2014 at 08:29:29PM +0200, Kostya Shishkov wrote:
 ---
  libavcodec/indeo2.c |   16 
  1 file changed, 8 insertions(+), 8 deletions(-)
 
 I strongly vote for my patch instead to have things more, not less,

I'm strongly against it, pitch is a valid term and is commonly used in
Intel software (mfx uses it to name one).

lu


___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 1/2] fate: Add dependencies for dct/fft/mdct/rdft tests

2014-06-26 Thread Luca Barbato
On 26/06/14 02:45, Diego Biurrun wrote:
 ---
  libavcodec/fft-test.c | 22 ++
  tests/fate/fft.mak| 32 
  2 files changed, 38 insertions(+), 16 deletions(-)
 

Looks fine.

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] Add asfinfo tool.

2014-06-26 Thread Alexandra Hájková
The tool prints out asf file structure.
---
 libavformat/Makefile |   3 +-
 tools/asfinfo.c  | 521 +++
 2 files changed, 523 insertions(+), 1 deletion(-)
 create mode 100644 tools/asfinfo.c

diff --git a/libavformat/Makefile b/libavformat/Makefile
index 89d2d42..f42c19f 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -404,7 +404,8 @@ TESTPROGS = seek
\
 
 TESTPROGS-$(CONFIG_NETWORK)  += noproxy
 
-TOOLS = aviocat \
+TOOLS = asfinfo \
+aviocat \
 ismindex\
 pktdumper   \
 probetest   \
diff --git a/tools/asfinfo.c b/tools/asfinfo.c
new file mode 100644
index 000..f009fe3
--- /dev/null
+++ b/tools/asfinfo.c
@@ -0,0 +1,521 @@
+/*
+ * Copyright (c) 2014 Alexandra Hajkova
+ *
+ * This file is part of Libav.
+ *
+ * Libav 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.
+ *
+ * Libav 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 Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include config.h
+
+#include ctype.h
+#include errno.h
+#include limits.h
+#include math.h
+#include signal.h
+#include stdint.h
+#include stdlib.h
+#include string.h
+
+#include libavutil/avstring.h
+
+#include libavformat/asf.h
+#include libavformat/avformat.h
+
+#define ASF_TYPE_AUDIO 0x2
+#define ASF_TYPE_VIDEO 0x1
+#define ASF_STREAM_NUM 0x7F
+#define ASF_ERROR_CORRECTION_LENGTH_TYPE 0x60
+#define ASF_NUM_OF_PAYLOADS 0x3F
+
+static const char *filename;
+static const char program_name[] = asfinfo;
+static const int program_birth_year = 2014;
+
+static unsigned char GUID[16]; //128-bit
+
+typedef struct guids {
+char name[100];
+char num[16];
+int (*read_object)(AVIOContext*, struct guids*, int64_t);
+int is_subobject;
+} guids;
+
+typedef struct data_properties {
+uint64_t num_of_packets;
+uint32_t packet_size;
+} data_properties;
+
+static data_properties *datap = NULL;
+
+static guids *find_guid(unsigned char *guid, guids *g);
+static int process_asf(AVIOContext *pb, int type, uint64_t size);
+
+
+static void swap_guid(unsigned char GUID[16])
+{
+FFSWAP(unsigned char, GUID[0], GUID[3]);
+FFSWAP(unsigned char, GUID[1], GUID[2]);
+FFSWAP(unsigned char, GUID[4], GUID[5]);
+FFSWAP(unsigned char, GUID[6], GUID[7]);
+}
+
+static void show_usage(void)
+{
+printf(ASF file format viewer\n);
+printf(usage: %s input_file\n, program_name);
+printf(\n);
+}
+
+static uint64_t read_obj_size(AVIOContext *pb, guids *g, int64_t offset)
+{
+uint64_t size;
+
+printf(%sASF %s Object, position: %PRId64 bytes\n,
+   g-is_subobject ?:, g-name, offset);
+size = avio_rl64(pb);
+if (size)
+printf(%sObject size: %PRIu64 bytes\n, g-is_subobject ? : 
, size);
+else
+printf(Error: can not read object size\n);
+
+return size;
+}
+
+static void check_position(AVIOContext *pb,  int64_t offset, uint64_t size)
+{
+
+if (avio_tell(pb) != (offset + size)) {
+printf(Error! Expected position %PRIu64, got %PRIu64. Seeking to 
the expected postition.\n,
+   offset + size, avio_tell(pb));
+avio_seek(pb, offset + size, SEEK_SET);
+}
+}
+
+static int read_header(AVIOContext *pb, guids *g, int64_t offset)
+{
+uint64_t size = read_obj_size(pb, g, offset);
+avio_skip(pb, 6);
+process_asf(pb, 1, offset + size);
+check_position(pb, offset, size);
+
+return 0;
+}
+
+static int read_metadata(AVIOContext *pb, const char *title, uint16_t len, 
unsigned char *ch, uint16_t max_len)
+{
+printf(   %s: , title);
+memset(ch, 0, max_len);
+avio_get_str16le(pb, len * sizeof(*ch), ch, len * sizeof(*ch));
+printf(   %s\n, ch);
+
+return 0;
+}
+
+static int read_content(AVIOContext *pb, guids *g, int64_t offset)
+{
+int i;
+uint16_t len[5], max_len = 0;
+const char *titles[] = { Title, Author, Copyright, Description, 
Rate };
+unsigned char *ch;
+uint64_t size = read_obj_size(pb, g, offset);
+
+for (i = 0; i  5; i++) {
+len[i] = 

Re: [libav-devel] [PATCH] Add asfinfo tool.

2014-06-26 Thread Luca Barbato
On 26/06/14 14:55, Alexandra Hájková wrote:
 The tool prints out asf file structure.
 ---
  libavformat/Makefile |   3 +-
  tools/asfinfo.c  | 521 
 +++
  2 files changed, 523 insertions(+), 1 deletion(-)
  create mode 100644 tools/asfinfo.c
 

Fine for me.

lu

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 01/15] hevc: Fix picture output logic

2014-06-26 Thread Anton Khirnov

On Tue, 24 Jun 2014 16:26:40 +0200, Luca Barbato lu_z...@gentoo.org wrote:
 From: Gildas Cocherel gildas.coche...@laposte.net
 
 ---
  libavcodec/hevc.c  | 34 ++
  libavcodec/hevc.h  |  1 +
  libavcodec/hevc_refs.c | 16 +++-
  3 files changed, 50 insertions(+), 1 deletion(-)
 
 diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
 index 66e7dd3..c78f556 100644
 --- a/libavcodec/hevc.c
 +++ b/libavcodec/hevc.c
 @@ -455,6 +455,30 @@ fail:
  return ret;
  }
  
 +static int match_sps(HEVCContext *s,
 + const HEVCSPS *cur_sps,
 + const HEVCSPS *prev_sps)
 +{
 +int i;
 +
 +for (i = 0; i  MAX_SPS_COUNT; i++) {
 +if (s-sps_list[i]) {
 +if (prev_sps == (HEVCSPS*)s-sps_list[i]-data)
 +break;
 +}
 +}
 +
 +if (i == MAX_SPS_COUNT ||
 +cur_sps-width != prev_sps-width ||
 +cur_sps-height != prev_sps-height ||
 +cur_sps-temporal_layer[cur_sps-max_sub_layers - 
 1].max_dec_pic_buffering !=
 +prev_sps-temporal_layer[prev_sps-max_sub_layers - 
 1].max_dec_pic_buffering) {
 +return 0;
 +}
 +
 +return 1;
 +}
 +
  static int hls_slice_header(HEVCContext *s)
  {
  GetBitContext *gb = s-HEVClc.gb;
 @@ -469,8 +493,11 @@ static int hls_slice_header(HEVCContext *s)
  if (IS_IDR(s))
  ff_hevc_clear_refs(s);
  }
 +sh-no_output_of_prior_pics_flag = 0;
  if (s-nal_unit_type = 16  s-nal_unit_type = 23)
  sh-no_output_of_prior_pics_flag = get_bits1(gb);
 +if (s-nal_unit_type == NAL_CRA_NUT  s-last_eos == 1)
 +sh-no_output_of_prior_pics_flag = 1;
  
  sh-pps_id = get_ue_golomb_long(gb);
  if (sh-pps_id = MAX_PPS_COUNT || !s-pps_list[sh-pps_id]) {
 @@ -485,7 +512,10 @@ static int hls_slice_header(HEVCContext *s)
  s-pps = (HEVCPPS*)s-pps_list[sh-pps_id]-data;
  
  if (s-sps != (HEVCSPS*)s-sps_list[s-pps-sps_id]-data) {
 +const HEVCSPS* prev_sps = s-sps;
  s-sps = (HEVCSPS*)s-sps_list[s-pps-sps_id]-data;
 +if (prev_sps  !match_sps(s, s-sps, prev_sps))
 +sh-no_output_of_prior_pics_flag = 0;
  
  ff_hevc_clear_refs(s);
  ret = set_sps(s, s-sps);
 @@ -545,6 +575,7 @@ static int hls_slice_header(HEVCContext *s)
  return AVERROR_INVALIDDATA;
  }
  
 +sh-pic_output_flag = 1;

The part with pic_output_flag handling looks ok and should be IMO split into a
separate patch. The rest looks weird.

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 02/15] hevc: Split MC in unidirectional

2014-06-26 Thread Anton Khirnov

On Tue, 24 Jun 2014 16:26:41 +0200, Luca Barbato lu_z...@gentoo.org wrote:
 From: Mickaël Raulet mrau...@insa-rennes.fr
 
 ---
  libavcodec/hevc.c  |  615 ++-
  libavcodec/hevc.h  |   19 +-
  libavcodec/hevc_cabac.c|2 +-
  libavcodec/hevc_filter.c   |  297 +--
  libavcodec/hevc_mvs.c  |  109 ++--
  libavcodec/hevcdsp.c   |  125 +++--
  libavcodec/hevcdsp.h   |   51 +-
  libavcodec/hevcdsp_template.c  | 1073 
 
  libavcodec/hevcpred_template.c |   12 +-
  9 files changed, 1567 insertions(+), 736 deletions(-)
 
 diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
 index c78f556..1e16922 100644
 --- a/libavcodec/hevc.c
 +++ b/libavcodec/hevc.c
 @@ -37,9 +37,10 @@
  #include golomb.h
  #include hevc.h
  
 -const uint8_t ff_hevc_qpel_extra_before[4] = { 0, 3, 3, 2 };
 -const uint8_t ff_hevc_qpel_extra_after[4]  = { 0, 3, 4, 4 };
 -const uint8_t ff_hevc_qpel_extra[4]= { 0, 6, 7, 6 };
 +const uint8_t ff_hevc_pel_weight[65] = {
 +[2]  = 0, [4]  = 1, [6]  = 2, [8]  = 3, [12] = 4,
 +[16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9
 +};
  
  static const uint8_t scan_1x1[1] = { 0 };
  
 @@ -231,7 +232,7 @@ static int pic_arrays_init(HEVCContext *s, const HEVCSPS 
 *sps)
  goto fail;
  
  s-tab_mvf_pool = av_buffer_pool_init(min_pu_size * sizeof(MvField),
 -  av_buffer_alloc);
 +  av_buffer_allocz);

Unrelated?

  s-rpl_tab_pool = av_buffer_pool_init(ctb_count * sizeof(RefPicListTab),
av_buffer_allocz);
  if (!s-tab_mvf_pool || !s-rpl_tab_pool)
 @@ -256,7 +257,7 @@ static void pred_weight_table(HEVCContext *s, 
 GetBitContext *gb)
  s-sh.luma_log2_weight_denom = get_ue_golomb_long(gb);
  if (s-sps-chroma_format_idc != 0) {
  int delta = get_se_golomb(gb);
 -s-sh.chroma_log2_weight_denom = 
 av_clip_c(s-sh.luma_log2_weight_denom + delta, 0, 7);
 +s-sh.chroma_log2_weight_denom = 
 av_clip(s-sh.luma_log2_weight_denom + delta, 0, 7);

Unrelated?

  }
  
  for (i = 0; i  s-sh.nb_refs[L0]; i++) {
 @@ -284,7 +285,7 @@ static void pred_weight_table(HEVCContext *s, 
 GetBitContext *gb)
  int delta_chroma_weight_l0 = get_se_golomb(gb);
  int delta_chroma_offset_l0 = get_se_golomb(gb);
  s-sh.chroma_weight_l0[i][j] = (1  
 s-sh.chroma_log2_weight_denom) + delta_chroma_weight_l0;
 -s-sh.chroma_offset_l0[i][j] = 
 av_clip_c((delta_chroma_offset_l0 - ((128 * s-sh.chroma_weight_l0[i][j])
 +s-sh.chroma_offset_l0[i][j] = 
 av_clip((delta_chroma_offset_l0 - ((128 * s-sh.chroma_weight_l0[i][j])

Unrelated?

   
 s-sh.chroma_log2_weight_denom) + 128), -128, 127);
  }
  } else {
 @@ -320,7 +321,7 @@ static void pred_weight_table(HEVCContext *s, 
 GetBitContext *gb)
  int delta_chroma_weight_l1 = get_se_golomb(gb);
  int delta_chroma_offset_l1 = get_se_golomb(gb);
  s-sh.chroma_weight_l1[i][j] = (1  
 s-sh.chroma_log2_weight_denom) + delta_chroma_weight_l1;
 -s-sh.chroma_offset_l1[i][j] = 
 av_clip_c((delta_chroma_offset_l1 - ((128 * s-sh.chroma_weight_l1[i][j])
 +s-sh.chroma_offset_l1[i][j] = 
 av_clip((delta_chroma_offset_l1 - ((128 * s-sh.chroma_weight_l1[i][j])

Unrelated?

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH 04/15] hevc: Set the keyframe correctly

2014-06-26 Thread Anton Khirnov

On Tue, 24 Jun 2014 16:26:43 +0200, Luca Barbato lu_z...@gentoo.org wrote:
 From: Mickaël Raulet mrau...@insa-rennes.fr
 
 Before it was incorrectly set always to 1.

was it?
 ---
  libavcodec/hevc.c | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
 index 002d9f4..fffca33 100644
 --- a/libavcodec/hevc.c
 +++ b/libavcodec/hevc.c
 @@ -3122,6 +3122,7 @@ static int hevc_decode_frame(AVCodecContext *avctx, 
 void *data, int *got_output,
  
  if (s-is_decoded) {
  av_log(avctx, AV_LOG_DEBUG, Decoded frame with POC %d.\n, s-poc);
 +s-ref-frame-key_frame = IS_IRAP(s);

This looks like the wrong place for this, since the last decoded NALU is not
necessarily a slice, it could be SEI. The right place would be
hevc_frame_start()

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH 06/15] hevc: Add SSE4 MC functions

2014-06-26 Thread Anton Khirnov

On Tue, 24 Jun 2014 16:26:45 +0200, Luca Barbato lu_z...@gentoo.org wrote:
 From: Pierre Edouard Lepere pierre-edouard.lep...@insa-rennes.fr
 
 The functions only support x86_64.
 
 Fixes from Hendrik Leppkes and James Almer
 
 Signed-off-by: Luca Barbato lu_z...@gentoo.org
 ---
  libavcodec/hevcdsp.c  |6 +-
  libavcodec/hevcdsp.h  |3 +
  libavcodec/x86/Makefile   |2 +
  libavcodec/x86/hevc_mc.asm| 1256 
 +
  libavcodec/x86/hevcdsp.h  |  164 ++
  libavcodec/x86/hevcdsp_init.c |  373 
  6 files changed, 1803 insertions(+), 1 deletion(-)
  create mode 100644 libavcodec/x86/hevc_mc.asm
  create mode 100644 libavcodec/x86/hevcdsp.h
  create mode 100644 libavcodec/x86/hevcdsp_init.c
 
 diff --git a/libavcodec/hevcdsp.c b/libavcodec/hevcdsp.c
 index c67a42d..e63ef6b 100644
 --- a/libavcodec/hevcdsp.c
 +++ b/libavcodec/hevcdsp.c
 @@ -2,6 +2,7 @@
   * HEVC video decoder
   *
   * Copyright (C) 2012 - 2013 Guillaume Martres
 + * Copyright (C) 2013 - 2014 Pierre-Edouard Lepere
   *
   * This file is part of Libav.
   *
 @@ -224,7 +225,7 @@ void ff_hevc_dsp_init(HEVCDSPContext *hevcdsp, int 
 bit_depth)
  hevcdsp-hevc_h_loop_filter_luma_c   = FUNC(hevc_h_loop_filter_luma, 
 depth);   \
  hevcdsp-hevc_v_loop_filter_luma_c   = FUNC(hevc_v_loop_filter_luma, 
 depth);   \
  hevcdsp-hevc_h_loop_filter_chroma_c = FUNC(hevc_h_loop_filter_chroma, 
 depth); \
 -hevcdsp-hevc_v_loop_filter_chroma_c = FUNC(hevc_v_loop_filter_chroma, 
 depth);
 +hevcdsp-hevc_v_loop_filter_chroma_c = FUNC(hevc_v_loop_filter_chroma, 
 depth)
  int i = 0;
  
  switch (bit_depth) {
 @@ -238,4 +239,7 @@ int i = 0;
  HEVC_DSP(8);
  break;
  }
 +
 +if (ARCH_X86_64)
 +ff_hevcdsp_init_x86(hevcdsp, bit_depth);
  }
 diff --git a/libavcodec/hevcdsp.h b/libavcodec/hevcdsp.h
 index 1b4be45..c4c9194 100644
 --- a/libavcodec/hevcdsp.h
 +++ b/libavcodec/hevcdsp.h
 @@ -2,6 +2,8 @@
   * HEVC video decoder
   *
   * Copyright (C) 2012 - 2013 Guillaume Martres
 + * Copyright (C) 2013 - 2014 Pierre-Edouard Lepere
 + *
   *
   * This file is part of Libav.
   *
 @@ -116,5 +118,6 @@ void ff_hevc_dsp_init(HEVCDSPContext *hpc, int bit_depth);
  extern const int8_t ff_hevc_epel_filters[7][4];
  extern const int8_t ff_hevc_qpel_filters[3][16];
  
 +void ff_hevcdsp_init_x86(HEVCDSPContext *c, const int bit_depth);
  
  #endif /* AVCODEC_HEVCDSP_H */
 diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
 index 13f9aff..a8ca2a8 100644
 --- a/libavcodec/x86/Makefile
 +++ b/libavcodec/x86/Makefile
 @@ -15,6 +15,7 @@ OBJS-$(CONFIG_H264CHROMA)  += 
 x86/h264chroma_init.o
  OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o
  OBJS-$(CONFIG_H264PRED)+= x86/h264_intrapred_init.o
  OBJS-$(CONFIG_H264QPEL)+= x86/h264_qpel.o
 +OBJS-$(CONFIG_HEVC_DECODER)+= x86/hevcdsp_init.o
  OBJS-$(CONFIG_HPELDSP) += x86/hpeldsp_init.o
  OBJS-$(CONFIG_HUFFYUVDSP)  += x86/huffyuvdsp_init.o
  OBJS-$(CONFIG_HUFFYUVENCDSP)   += x86/huffyuvencdsp_mmx.o
 @@ -86,6 +87,7 @@ YASM-OBJS-$(CONFIG_H264QPEL)   += 
 x86/h264_qpel_8bit.o  \
x86/h264_qpel_10bit.o \
x86/fpel.o\
x86/qpel.o
 +YASM-OBJS-$(CONFIG_HEVC_DECODER)   += x86/hevc_mc.o
  YASM-OBJS-$(CONFIG_HPELDSP)+= x86/fpel.o\
x86/hpeldsp.o
  YASM-OBJS-$(CONFIG_HUFFYUVDSP) += x86/huffyuvdsp.o
 diff --git a/libavcodec/x86/hevc_mc.asm b/libavcodec/x86/hevc_mc.asm
 new file mode 100644
 index 000..30de03e
 --- /dev/null
 +++ b/libavcodec/x86/hevc_mc.asm
 @@ -0,0 +1,1256 @@
 +; /*
 +; * Provide SSE luma and chroma mc functions for HEVC decoding
 +; * Copyright (c) 2013 Pierre-Edouard LEPERE
 +; *
 +; * This file is part of FFmpeg.

Is it?

 +#define PEL_LINK(dst, idx1, idx2, idx3, name, D)\
 +dst[idx1][idx2][idx3] = \
 +ff_hevc_put_hevc_ ## name ## _ ## D ## _sse4;   \
 +dst ## _bi[idx1][idx2][idx3] =  \
 +ff_hevc_put_hevc_bi_ ## name ## _ ## D ## _sse4;\
 +dst ## _uni[idx1][idx2][idx3] = \
 +ff_hevc_put_hevc_uni_ ## name ## _ ## D ## _sse4;   \
 +dst ## _uni_w[idx1][idx2][idx3] =   \
 +ff_hevc_put_hevc_uni_w_ ## name ## _ ## D ## _sse4; \
 +dst ## _bi_w[idx1][idx2][idx3] =\
 +ff_hevc_put_hevc_bi_w_ ## name ## _ ## D ## _sse4

This macro should be defined where it's used IMO

 +
 +#define PEL_PROTOTYPE(name, D)   
  \
 +void ff_hevc_put_hevc_ ## name ## _ ## D ## _sse4(int16_t * dst,

Re: [libav-devel] [PATCH 01/11] dump_stream: print the timebase as

2014-06-26 Thread Anton Khirnov

On Tue, 24 Jun 2014 11:11:26 +0200, Anton Khirnov an...@khirnov.net wrote:
 It makes more sense to print the timebase exactly as it is set. Also,
 this avoids a divide by zero when av_dump_format() is called on a format
 context before writing the header.
 ---

Approved by Костя on IRC

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

[libav-devel] [PATCH] avformat: Move ASF flags definitions from asfenc.c to asf.h

2014-06-26 Thread Alexandra Hájková
---
 libavformat/asf.h| 154 ++
 libavformat/asfenc.c | 155 ---
 2 files changed, 154 insertions(+), 155 deletions(-)

diff --git a/libavformat/asf.h b/libavformat/asf.h
index 2f6722a..90c79a2 100644
--- a/libavformat/asf.h
+++ b/libavformat/asf.h
@@ -179,3 +179,157 @@ extern const AVMetadataConv ff_asf_metadata_conv[];
 extern AVInputFormat ff_asf_demuxer;
 
 #endif /* AVFORMAT_ASF_H */
+
+#define ASF_INDEXED_INTERVAL1000
+#define ASF_INDEX_BLOCK 600
+
+#define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE 0x2
+#define ASF_PACKET_ERROR_CORRECTION_FLAGS  \
+(ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT |\
+ ASF_PACKET_ERROR_CORRECTION_DATA_SIZE)
+
+#if (ASF_PACKET_ERROR_CORRECTION_FLAGS != 0)
+#   define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE 1
+#else
+#   define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE 0
+#endif
+
+#define ASF_PPI_PROPERTY_FLAGS   \
+(ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE   |\
+ ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD |\
+ ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE   |\
+ ASF_PL_FLAG_STREAM_NUMBER_LENGTH_FIELD_IS_BYTE)
+
+#define ASF_PPI_LENGTH_TYPE_FLAGS 0
+
+#define ASF_PAYLOAD_FLAGS ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD
+
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_SEQUENCE_FIELD_SIZE
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 0
+#endif
+
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_PACKET_LENGTH_FIELD_SIZE
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS 
 ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_PADDING_LENGTH_FIELD_SIZE
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_WORD == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_DWORD == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_BYTE == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 1
+#endif
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_WORD == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 2
+#endif
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 4
+#endif
+#ifndef ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 0
+#endif
+
+#if (ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE 1
+#endif
+#if 

[libav-devel] [PATCH] avformat: Move ASF flags definitions from asfenc.c to asf.h

2014-06-26 Thread Alexandra Hájková
---
 libavformat/asf.h| 156 ++-
 libavformat/asfenc.c | 155 --
 2 files changed, 155 insertions(+), 156 deletions(-)

diff --git a/libavformat/asf.h b/libavformat/asf.h
index 2f6722a..1746b6a 100644
--- a/libavformat/asf.h
+++ b/libavformat/asf.h
@@ -74,7 +74,6 @@ typedef struct ASFMainHeader {
  *   individual media streams */
 } ASFMainHeader;
 
-
 typedef struct ASFIndex {
 uint32_t packet_number;
 uint16_t packet_count;
@@ -178,4 +177,159 @@ extern const AVMetadataConv ff_asf_metadata_conv[];
 
 extern AVInputFormat ff_asf_demuxer;
 
+
+#define ASF_INDEXED_INTERVAL1000
+#define ASF_INDEX_BLOCK 600
+
+#define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE 0x2
+#define ASF_PACKET_ERROR_CORRECTION_FLAGS  \
+(ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT |\
+ ASF_PACKET_ERROR_CORRECTION_DATA_SIZE)
+
+#if (ASF_PACKET_ERROR_CORRECTION_FLAGS != 0)
+#   define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE 1
+#else
+#   define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE 0
+#endif
+
+#define ASF_PPI_PROPERTY_FLAGS   \
+(ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE   |\
+ ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD |\
+ ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE   |\
+ ASF_PL_FLAG_STREAM_NUMBER_LENGTH_FIELD_IS_BYTE)
+
+#define ASF_PPI_LENGTH_TYPE_FLAGS 0
+
+#define ASF_PAYLOAD_FLAGS ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD
+
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_SEQUENCE_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_SEQUENCE_FIELD_SIZE))
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_SEQUENCE_FIELD_SIZE
+#   define ASF_PPI_SEQUENCE_FIELD_SIZE 0
+#endif
+
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_PACKET_LENGTH_FIELD_SIZE
+#   define ASF_PPI_PACKET_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_BYTE == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_WORD == (ASF_PPI_LENGTH_TYPE_FLAGS  
ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_DWORD == (ASF_PPI_LENGTH_TYPE_FLAGS 
 ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE))
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PPI_PADDING_LENGTH_FIELD_SIZE
+#   define ASF_PPI_PADDING_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 1
+#endif
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_WORD == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 2
+#endif
+#if (ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_DWORD == 
(ASF_PPI_PROPERTY_FLAGS  ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 4
+#endif
+#ifndef ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE
+#   define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE 0
+#endif
+
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_BYTE == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 1
+#endif
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_WORD == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 2
+#endif
+#if (ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD == 
(ASF_PPI_PROPERTY_FLAGS  
ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE))
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 4
+#endif
+#ifndef ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE
+#   define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE 0
+#endif
+
+#if 

Re: [libav-devel] [PATCH 04/15] hevc: Set the keyframe correctly

2014-06-26 Thread Vittorio Giovara
On Wed, Jun 25, 2014 at 8:31 AM, Hendrik Leppkes h.lepp...@gmail.com wrote:
 Setting key frame based on them is the most logical choice, really.

My point was more that it's really hard to tell what key_frame does
since its documentation is just 1 - keyframe, 0 - not.
Have you got any pointers that would improve it by chance?
Thanks.
-- 
Vittorio
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] cljr: split decoder and encoder

2014-06-26 Thread Nidhi Makhijani
---
 libavcodec/Makefile  |  4 +--
 libavcodec/{cljr.c = cljrdec.c} | 75 ++--
 libavcodec/{cljr.c = cljrenc.c} | 74 ++-
 3 files changed, 6 insertions(+), 147 deletions(-)
 copy libavcodec/{cljr.c = cljrdec.c} (57%)
 rename libavcodec/{cljr.c = cljrenc.c} (57%)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 1881b0b..e25baf9 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -140,8 +140,8 @@ OBJS-$(CONFIG_CAVS_DECODER)+= cavs.o cavsdec.o 
cavsdsp.o \
 OBJS-$(CONFIG_CDGRAPHICS_DECODER)  += cdgraphics.o
 OBJS-$(CONFIG_CDXL_DECODER)+= cdxl.o
 OBJS-$(CONFIG_CINEPAK_DECODER) += cinepak.o
-OBJS-$(CONFIG_CLJR_DECODER)+= cljr.o
-OBJS-$(CONFIG_CLJR_ENCODER)+= cljr.o
+OBJS-$(CONFIG_CLJR_DECODER)+= cljrdec.o
+OBJS-$(CONFIG_CLJR_ENCODER)+= cljrenc.o
 OBJS-$(CONFIG_CLLC_DECODER)+= cllc.o
 OBJS-$(CONFIG_COOK_DECODER)+= cook.o
 OBJS-$(CONFIG_COMFORTNOISE_DECODER)+= cngdec.o celp_filters.o
diff --git a/libavcodec/cljr.c b/libavcodec/cljrdec.c
similarity index 57%
copy from libavcodec/cljr.c
copy to libavcodec/cljrdec.c
index ad0f729..e74d1fa 100644
--- a/libavcodec/cljr.c
+++ b/libavcodec/cljrdec.c
@@ -1,5 +1,5 @@
 /*
- * Cirrus Logic AccuPak (CLJR) codec
+ * Cirrus Logic AccuPak (CLJR) decoder
  * Copyright (c) 2003 Alex Beregszaszi
  *
  * This file is part of Libav.
@@ -21,15 +21,13 @@
 
 /**
  * @file
- * Cirrus Logic AccuPak codec.
+ * Cirrus Logic AccuPak decoder.
  */
 
 #include avcodec.h
 #include get_bits.h
 #include internal.h
-#include put_bits.h
 
-#if CONFIG_CLJR_DECODER
 static int decode_frame(AVCodecContext *avctx,
 void *data, int *got_frame,
 AVPacket *avpkt)
@@ -95,72 +93,3 @@ AVCodec ff_cljr_decoder = {
 .decode = decode_frame,
 .capabilities   = CODEC_CAP_DR1,
 };
-#endif
-
-#if CONFIG_CLJR_ENCODER
-static av_cold int encode_init(AVCodecContext *avctx)
-{
-avctx-coded_frame = av_frame_alloc();
-if (!avctx-coded_frame)
-return AVERROR(ENOMEM);
-
-return 0;
-}
-
-static av_cold int encode_close(AVCodecContext *avctx)
-{
-av_frame_free(avctx-coded_frame);
-return 0;
-}
-
-static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
-const AVFrame *p, int *got_packet)
-{
-PutBitContext pb;
-int x, y, ret;
-
-if ((ret = ff_alloc_packet(pkt, 32*avctx-height*avctx-width/4))  0) {
-av_log(avctx, AV_LOG_ERROR, Error getting output packet.\n);
-return ret;
-}
-
-avctx-coded_frame-pict_type = AV_PICTURE_TYPE_I;
-avctx-coded_frame-key_frame = 1;
-
-init_put_bits(pb, pkt-data, pkt-size);
-
-for (y = 0; y  avctx-height; y++) {
-uint8_t *luma = p-data[0][y * p-linesize[0]];
-uint8_t *cb   = p-data[1][y * p-linesize[1]];
-uint8_t *cr   = p-data[2][y * p-linesize[2]];
-for (x = 0; x  avctx-width; x += 4) {
-put_bits(pb, 5, luma[3]  3);
-put_bits(pb, 5, luma[2]  3);
-put_bits(pb, 5, luma[1]  3);
-put_bits(pb, 5, luma[0]  3);
-luma += 4;
-put_bits(pb, 6, *(cb++)  2);
-put_bits(pb, 6, *(cr++)  2);
-}
-}
-
-flush_put_bits(pb);
-
-pkt-size   = put_bits_count(pb) / 8;
-pkt-flags |= AV_PKT_FLAG_KEY;
-*got_packet = 1;
-return 0;
-}
-
-AVCodec ff_cljr_encoder = {
-.name   = cljr,
-.long_name  = NULL_IF_CONFIG_SMALL(Cirrus Logic AccuPak),
-.type   = AVMEDIA_TYPE_VIDEO,
-.id = AV_CODEC_ID_CLJR,
-.init   = encode_init,
-.encode2= encode_frame,
-.close  = encode_close,
-.pix_fmts   = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV411P,
-   AV_PIX_FMT_NONE },
-};
-#endif
diff --git a/libavcodec/cljr.c b/libavcodec/cljrenc.c
similarity index 57%
rename from libavcodec/cljr.c
rename to libavcodec/cljrenc.c
index ad0f729..9444ee4 100644
--- a/libavcodec/cljr.c
+++ b/libavcodec/cljrenc.c
@@ -1,5 +1,5 @@
 /*
- * Cirrus Logic AccuPak (CLJR) codec
+ * Cirrus Logic AccuPak (CLJR) encoder
  * Copyright (c) 2003 Alex Beregszaszi
  *
  * This file is part of Libav.
@@ -21,7 +21,7 @@
 
 /**
  * @file
- * Cirrus Logic AccuPak codec.
+ * Cirrus Logic AccuPak encoder.
  */
 
 #include avcodec.h
@@ -29,75 +29,6 @@
 #include internal.h
 #include put_bits.h
 
-#if CONFIG_CLJR_DECODER
-static int decode_frame(AVCodecContext *avctx,
-void *data, int *got_frame,
-AVPacket *avpkt)
-{
-const uint8_t *buf = avpkt-data;
-int buf_size   = avpkt-size;
-GetBitContext gb;
-AVFrame * const p = data;
-int x, y, ret;
-
-if (avctx-height = 0 || avctx-width = 0) {
-av_log(avctx, AV_LOG_ERROR, Invalid width or height\n);
- 

Re: [libav-devel] [PATCH 04/15] hevc: Set the keyframe correctly

2014-06-26 Thread Yusuke Nakamura
2014-06-27 2:16 GMT+09:00 Vittorio Giovara vittorio.giov...@gmail.com:

 On Wed, Jun 25, 2014 at 8:31 AM, Hendrik Leppkes h.lepp...@gmail.com
 wrote:
  Setting key frame based on them is the most logical choice, really.

 My point was more that it's really hard to tell what key_frame does
 since its documentation is just 1 - keyframe, 0 - not.
 Have you got any pointers that would improve it by chance?
 Thanks.
 --
 Vittorio
 ___
 libav-devel mailing list
 libav-devel@libav.org
 https://lists.libav.org/mailman/listinfo/libav-devel


What libavcodec's H.264 decoder and parser do is marking an IDR-picture or
a picture with recovery point SEI as a keyframe.
However, those pictures themselves do not always guarantee that decoding
from there gives correct output i.e. no errors.
At least, correct decoding requires corresponding parameter sets for them.
So, according to what libavcodec does so far, 'keyframe' is defined as a
frame which has hint to get correct output.
The 'keyframe' parameter itself has no hint other than that though.
For instance, an IDR-picture has the hint that you'll get correct output by
decoding 0 pictures from there with corresponding parameter sets.

It's too bad that 'keyframe' is not always useful for seek because of that
and libavformat uses such 'keyframe' to seek without returning other hints.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 04/15] hevc: Set the keyframe correctly

2014-06-26 Thread Derek Buitenhuis
On 6/26/2014 7:58 PM, Yusuke Nakamura wrote:
 It's too bad that 'keyframe' is not always useful for seek because of that
 and libavformat uses such 'keyframe' to seek without returning other hints.

Hence stuff like d2v exists ;)

/troll

- Derek
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] rtpenc_jpeg: check for color_range too

2014-06-26 Thread Vittorio Giovara
---
 libavformat/rtpenc_jpeg.c | 12 
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/libavformat/rtpenc_jpeg.c b/libavformat/rtpenc_jpeg.c
index 04df658..9d0915b 100644
--- a/libavformat/rtpenc_jpeg.c
+++ b/libavformat/rtpenc_jpeg.c
@@ -29,7 +29,7 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t 
*buf, int size)
 RTPMuxContext *s = s1-priv_data;
 const uint8_t *qtables = NULL;
 int nb_qtables = 0;
-uint8_t type = 1; /* default pixel format is AV_PIX_FMT_YUVJ420P */
+uint8_t type;
 uint8_t w, h;
 uint8_t *p;
 int off = 0; /* fragment offset of the current JPEG frame */
@@ -43,10 +43,14 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t 
*buf, int size)
 w = s1-streams[0]-codec-width   3;
 h = s1-streams[0]-codec-height  3;
 
-/* check if pixel format is not the normal 420 case */
-if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ422P) {
+/* get the pixel format type or fail */
+if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ422P ||
+(s1-streams[0]-codec-color_range == AVCOL_RANGE_JPEG 
+ s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUV422P)) {
 type = 0;
-} else if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ420P) {
+} else if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ420P ||
+   (s1-streams[0]-codec-color_range == AVCOL_RANGE_JPEG 
+s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUV420P)) {
 type = 1;
 } else {
 av_log(s1, AV_LOG_ERROR, Unsupported pixel format\n);
-- 
1.8.5.2 (Apple Git-48)

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH] rtpenc_jpeg: check for color_range too

2014-06-26 Thread Luca Barbato
On 26/06/14 21:30, Vittorio Giovara wrote:
 ---
  libavformat/rtpenc_jpeg.c | 12 
  1 file changed, 8 insertions(+), 4 deletions(-)
 
 diff --git a/libavformat/rtpenc_jpeg.c b/libavformat/rtpenc_jpeg.c
 index 04df658..9d0915b 100644
 --- a/libavformat/rtpenc_jpeg.c
 +++ b/libavformat/rtpenc_jpeg.c
 @@ -29,7 +29,7 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t 
 *buf, int size)
  RTPMuxContext *s = s1-priv_data;
  const uint8_t *qtables = NULL;
  int nb_qtables = 0;
 -uint8_t type = 1; /* default pixel format is AV_PIX_FMT_YUVJ420P */
 +uint8_t type;
  uint8_t w, h;
  uint8_t *p;
  int off = 0; /* fragment offset of the current JPEG frame */
 @@ -43,10 +43,14 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t 
 *buf, int size)
  w = s1-streams[0]-codec-width   3;
  h = s1-streams[0]-codec-height  3;
  
 -/* check if pixel format is not the normal 420 case */
 -if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ422P) {
 +/* get the pixel format type or fail */
 +if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ422P ||
 +(s1-streams[0]-codec-color_range == AVCOL_RANGE_JPEG 
 + s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUV422P)) {
  type = 0;
 -} else if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ420P) {
 +} else if (s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUVJ420P ||
 +   (s1-streams[0]-codec-color_range == AVCOL_RANGE_JPEG 
 +s1-streams[0]-codec-pix_fmt == AV_PIX_FMT_YUV420P)) {
  type = 1;
  } else {
  av_log(s1, AV_LOG_ERROR, Unsupported pixel format\n);

While at it are you willing to print the unsupported pixel format? (or
remind me later).

The patch seems fine.

lu




___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 06/15] hevc: Add SSE4 MC functions

2014-06-26 Thread James Almer
---
This applies cleanly after PATCH 14/15, and of course requires relevant changes 
to 
hevc_init.c
I think i got every function right, but in any case fixing any of them is a 
single 
line change.

In the end, out of 190 functions, only 44 were SSE4.

 libavcodec/x86/hevc_mc.asm | 363 +++--
 1 file changed, 281 insertions(+), 82 deletions(-)

diff --git a/libavcodec/x86/hevc_mc.asm b/libavcodec/x86/hevc_mc.asm
index dac3295..4696fa8 100644
--- a/libavcodec/x86/hevc_mc.asm
+++ b/libavcodec/x86/hevc_mc.asm
@@ -30,8 +30,8 @@ zero:   times 4  dd 0
 one_per_32: times 4  dd 1
 
 SECTION .text
-%macro EPEL_TABLE 4
-hevc_epel_filters_%4_%1 times %2 d%3 -2, 58
+%macro EPEL_TABLE 3
+hevc_epel_filters_%1 times %2 d%3 -2, 58
 times %2 d%3 10, -2
 times %2 d%3 -4, 54
 times %2 d%3 16, -2
@@ -49,11 +49,11 @@ hevc_epel_filters_%4_%1 times %2 d%3 -2, 58
 
 
 
-EPEL_TABLE  8, 8, b, sse4
-EPEL_TABLE 10, 4, w, sse4
+EPEL_TABLE  8, 8, b
+EPEL_TABLE 10, 4, w
 
-%macro QPEL_TABLE 4
-hevc_qpel_filters_%4_%1 times %2 d%3  -1,  4
+%macro QPEL_TABLE 3
+hevc_qpel_filters_%1 times %2 d%3  -1,  4
 times %2 d%3 -10, 58
 times %2 d%3  17, -5
 times %2 d%3   1,  0
@@ -67,10 +67,10 @@ hevc_qpel_filters_%4_%1 times %2 d%3  -1,  4
 times %2 d%3   4, -1
 %endmacro
 
-QPEL_TABLE  8, 8, b, sse4
-QPEL_TABLE 10, 4, w, sse4
+QPEL_TABLE  8, 8, b
+QPEL_TABLE 10, 4, w
 
-%define hevc_qpel_filters_sse4_14 hevc_qpel_filters_sse4_10
+%define hevc_qpel_filters_14 hevc_qpel_filters_10
 
 %if ARCH_X86_64
 
@@ -114,9 +114,9 @@ QPEL_TABLE 10, 4, w, sse4
 
 %macro EPEL_FILTER 2-4; bit depth, filter index
 %ifdef PIC
-lea rfilterq, [hevc_epel_filters_sse4_%1]
+lea rfilterq, [hevc_epel_filters_%1]
 %else
-%define rfilterq hevc_epel_filters_sse4_%1
+%define rfilterq hevc_epel_filters_%1
 %endif
 sub  %2q, 1
 shl  %2q, 5  ; multiply by 32
@@ -131,9 +131,9 @@ QPEL_TABLE 10, 4, w, sse4
 
 %macro EPEL_HV_FILTER 1
 %ifdef PIC
-lea rfilterq, [hevc_epel_filters_sse4_%1]
+lea rfilterq, [hevc_epel_filters_%1]
 %else
-%define rfilterq hevc_epel_filters_sse4_%1
+%define rfilterq hevc_epel_filters_%1
 %endif
 sub  mxq, 1
 sub  myq, 1
@@ -144,9 +144,9 @@ QPEL_TABLE 10, 4, w, sse4
 lea   r3srcq, [srcstrideq*3]
 
 %ifdef PIC
-lea rfilterq, [hevc_epel_filters_sse4_10]
+lea rfilterq, [hevc_epel_filters_10]
 %else
-%define rfilterq hevc_epel_filters_sse4_10
+%define rfilterq hevc_epel_filters_10
 %endif
 movdqa   m12, [rfilterq + myq]; get 2 first values of 
filters
 movdqa   m13, [rfilterq + myq+16] ; get 2 last values of 
filters
@@ -154,9 +154,9 @@ QPEL_TABLE 10, 4, w, sse4
 
 %macro QPEL_FILTER 2
 %ifdef PIC
-lea rfilterq, [hevc_qpel_filters_sse4_%1]
+lea rfilterq, [hevc_qpel_filters_%1]
 %else
-%define rfilterq hevc_qpel_filters_sse4_%1
+%define rfilterq hevc_qpel_filters_%1
 %endif
 lea  %2q, [%2q*8-8]
 movdqa   m12, [rfilterq + %2q*8]   ; get 4 first values of 
filters
@@ -389,9 +389,9 @@ QPEL_TABLE 10, 4, w, sse4
 
 %macro QPEL_HV_COMPUTE 4 ; width, bitdepth, filter idx
 %ifdef PIC
-lea rfilterq, [hevc_qpel_filters_sse4_%2]
+lea rfilterq, [hevc_qpel_filters_%2]
 %else
-%define rfilterq hevc_qpel_filters_sse4_%2
+%define rfilterq hevc_qpel_filters_%2
 %endif
 
 %if %2 == 8
@@ -498,7 +498,6 @@ QPEL_TABLE 10, 4, w, sse4
 %endif
 %endmacro
 
-INIT_XMM sse4; adds ff_ and _sse4 to 
function name
 ; **
 ; void put_hevc_mc_pixels(int16_t *dst, ptrdiff_t dststride,
 ; uint8_t *_src, ptrdiff_t _srcstride,
@@ -514,7 +513,9 @@ cglobal hevc_put_hevc_pel_pixels%1_%2, 5, 5, 3, dst, 
dststride, src, srcstride,h
 PEL_10STORE%1 dstq, m0, m1
 LOOP_END dst, dststride, src, srcstride
 RET
+%endmacro
 
+%macro HEVC_PUT_HEVC_UNI_PEL_PIXELS 2
 cglobal hevc_put_hevc_uni_pel_pixels%1_%2, 5, 5, 3, dst, dststride, src, 
srcstride,height
 pxor  m2, m2
 .loop
@@ -525,7 +526,9 @@ cglobal hevc_put_hevc_uni_pel_pixels%1_%2, 5, 5, 3, dst, 
dststride, src, srcstri
 dec  heightd ; cmp height
 jnz   .loop  ; height loop
 RET
+%endmacro
 
+%macro HEVC_PUT_HEVC_BI_PEL_PIXELS 2
 cglobal hevc_put_hevc_bi_pel_pixels%1_%2, 7, 7, 6, dst, dststride, src, 
srcstride, src2, src2stride,height
 pxor  m2, m2
 movdqam5, [pw_bi_%2]
@@ -541,9 +544,44 @@ cglobal hevc_put_hevc_bi_pel_pixels%1_%2, 7, 7, 6, dst, 

Re: [libav-devel] [PATCH 06/15] hevc: Add SSE4 MC functions

2014-06-26 Thread Luca Barbato
On 26/06/14 21:49, James Almer wrote:
 ---
 This applies cleanly after PATCH 14/15, and of course requires relevant 
 changes to 
 hevc_init.c
 I think i got every function right, but in any case fixing any of them is a 
 single 
 line change.
 
 In the end, out of 190 functions, only 44 were SSE4.
 

Great! This weekend I'll make sure to get it sorted =)

Thanks a lot!

lu

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] Announce Releases 10.2, 9.14 and 0.8.13

2014-06-26 Thread Reinhard Tartler
---
 src/download | 66 ++--
 src/news | 29 ++
 2 files changed, 62 insertions(+), 33 deletions(-)

diff --git a/src/download b/src/download
index a6ce9f8..18b9675 100644
--- a/src/download
+++ b/src/download
@@ -201,50 +201,50 @@ and much faster bug fixes such as additional features and 
security patches.
 a name=release_10/ah2Libav 10 Eks/h2
 
 p
-10.1 was released on 2014-05-10.  It is the latest point release from
+10.2 was released on 2014-06-26.  It is the latest point release from
 the version 10 release branch, which has been released on
 2014-03-23. Please give us feedback and use
 our a href=https://bugzilla.libav.org;Bugzilla/a for filing bugs.
 /p
 
 p
-a href=releases/libav-10.1.tar.xzDownload XZ tarball/anbsp;nbsp;
-a href=releases/libav-10.1.tar.xz.md5MD5/a
-a href=releases/libav-10.1.tar.xz.sha1SHA1/a
-a href=releases/libav-10.1.tar.xz.ascPGP signature/abr /
-a href=releases/libav-10.1.tar.gzDownload gzip tarball/anbsp;nbsp;
-a href=releases/libav-10.1.tar.gz.md5MD5/a
-a href=releases/libav-10.1.tar.gz.sha1SHA1/a
-a href=releases/libav-10.1.tar.gz.ascPGP signature/abr /
-a href=releases/libav-10.1.changelogChangelog/abr /
-a href=releases/libav-10.1.releaseRelease Notes/a
+a href=releases/libav-10.2.tar.xzDownload XZ tarball/anbsp;nbsp;
+a href=releases/libav-10.2.tar.xz.md5MD5/a
+a href=releases/libav-10.2.tar.xz.sha1SHA1/a
+a href=releases/libav-10.2.tar.xz.ascPGP signature/abr /
+a href=releases/libav-10.2.tar.gzDownload gzip tarball/anbsp;nbsp;
+a href=releases/libav-10.2.tar.gz.md5MD5/a
+a href=releases/libav-10.2.tar.gz.sha1SHA1/a
+a href=releases/libav-10.2.tar.gz.ascPGP signature/abr /
+a href=releases/libav-10.2.changelogChangelog/abr /
+a href=releases/libav-10.2.releaseRelease Notes/a
 /p
 
 a name=release_9/ah2Libav 9 plain 9/h2
 
 p
-9.13 was released on 2014-05-14. It is the latest point release from
+9.14 was released on 2014-06-26. It is the latest point release from
 the version 9 release branch, which was released on 2013-01-05. Please
 give us feedback and use our Bugzilla for filing
 bugs: a href=https://bugzilla.libav.org;https://bugzilla.libav.org//a
 /p
 
 p
-a href=releases/libav-9.13.tar.xzDownload XZ tarball/anbsp;nbsp;
-a href=releases/libav-9.13.tar.xz.md5MD5/a
-a href=releases/libav-9.13.tar.xz.sha1SHA1/a
-a href=releases/libav-9.13.tar.xz.ascPGP signature/abr /
-a href=releases/libav-9.13.tar.gzDownload gzip tarball/anbsp;nbsp;
-a href=releases/libav-9.13.tar.gz.md5MD5/a
-a href=releases/libav-9.13.tar.gz.sha1SHA1/a
-a href=releases/libav-9.13.tar.gz.ascPGP signature/abr /
-a href=releases/libav-9.13.changelogChangelog/abr /
-a href=releases/libav-9.13.releaseRelease Notes/a
+a href=releases/libav-9.14.tar.xzDownload XZ tarball/anbsp;nbsp;
+a href=releases/libav-9.14.tar.xz.md5MD5/a
+a href=releases/libav-9.14.tar.xz.sha1SHA1/a
+a href=releases/libav-9.14.tar.xz.ascPGP signature/abr /
+a href=releases/libav-9.14.tar.gzDownload gzip tarball/anbsp;nbsp;
+a href=releases/libav-9.14.tar.gz.md5MD5/a
+a href=releases/libav-9.14.tar.gz.sha1SHA1/a
+a href=releases/libav-9.14.tar.gz.ascPGP signature/abr /
+a href=releases/libav-9.14.changelogChangelog/abr /
+a href=releases/libav-9.14.releaseRelease Notes/a
 /p
 
-a name=release_0.8/ah2Libav 0.8.12 Forbidden Fruit/h2
+a name=release_0.8/ah2Libav 0.8 Forbidden Fruit/h2
 p
-0.8.12 was released on 2014-06-01. It is the latest point release from
+0.8.13 was released on 2014-06-26. It is the latest point release from
 the 0.8 branch, which was cut on 2012-01-21. Please give us feedback
 with your experiences with this release and use our new Bugzilla for
 filing bugs:
@@ -252,15 +252,15 @@ filing bugs:
 /p
 
 p
-a href=releases/libav-0.8.12.tar.xzDownload XZ tarball/anbsp;nbsp;
-a href=releases/libav-0.8.12.tar.xz.md5MD5/a
-a href=releases/libav-0.8.12.tar.xz.sha1SHA1/a
-a href=releases/libav-0.8.12.tar.xz.ascPGP signature/abr /
-a href=releases/libav-0.8.12.tar.gzDownload gzip tarball/anbsp;nbsp;
-a href=releases/libav-0.8.12.tar.gz.md5MD5/a
-a href=releases/libav-0.8.12.tar.gz.sha1SHA1/a
-a href=releases/libav-0.8.12.tar.gz.ascPGP signature/abr /
-a href=releases/libav-0.8.12.changelogChangelog/abr /
+a href=releases/libav-0.8.13.tar.xzDownload XZ tarball/anbsp;nbsp;
+a href=releases/libav-0.8.13.tar.xz.md5MD5/a
+a href=releases/libav-0.8.13.tar.xz.sha1SHA1/a
+a href=releases/libav-0.8.13.tar.xz.ascPGP signature/abr /
+a href=releases/libav-0.8.13.tar.gzDownload gzip tarball/anbsp;nbsp;
+a href=releases/libav-0.8.13.tar.gz.md5MD5/a
+a href=releases/libav-0.8.13.tar.gz.sha1SHA1/a
+a href=releases/libav-0.8.13.tar.gz.ascPGP signature/abr /
+a href=releases/libav-0.8.13.changelogChangelog/abr /
 a href=releases/libav-0.8.releaseRelease Notes/a
 /p
 
diff --git a/src/news b/src/news
index 8b2a05f..e2559b2 100644
--- a/src/news
+++ b/src/news
@@ -1,5 +1,34 @@
 h1News/h1
 
+a name=9.12_0.8.11/ah3March 14, 2014/h3
+p
+We are happy to update three