[libav-devel] [PATCH 1/3] lavf: add a raw HEVC demuxer

2013-09-27 Thread Anton Khirnov
From: Dirk Farin dirk.fa...@gmail.com

---
 libavformat/Makefile |1 +
 libavformat/allformats.c |1 +
 libavformat/hevcdec.c|   64 ++
 3 files changed, 66 insertions(+)
 create mode 100644 libavformat/hevcdec.c

diff --git a/libavformat/Makefile b/libavformat/Makefile
index 231e127..8abcb36 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -139,6 +139,7 @@ OBJS-$(CONFIG_H263_DEMUXER)  += h263dec.o 
rawdec.o
 OBJS-$(CONFIG_H263_MUXER)+= rawenc.o
 OBJS-$(CONFIG_H264_DEMUXER)  += h264dec.o rawdec.o
 OBJS-$(CONFIG_H264_MUXER)+= rawenc.o
+OBJS-$(CONFIG_HEVC_DEMUXER)  += hevcdec.o rawdec.o
 OBJS-$(CONFIG_HLS_DEMUXER)   += hls.o
 OBJS-$(CONFIG_HLS_MUXER) += hlsenc.o
 OBJS-$(CONFIG_IDCIN_DEMUXER) += idcin.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 585cf43..3bdbadf 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -117,6 +117,7 @@ void av_register_all(void)
 REGISTER_MUXDEMUX(H261, h261);
 REGISTER_MUXDEMUX(H263, h263);
 REGISTER_MUXDEMUX(H264, h264);
+REGISTER_DEMUXER (HEVC, hevc);
 REGISTER_MUXDEMUX(HLS,  hls);
 REGISTER_DEMUXER (IDCIN,idcin);
 REGISTER_DEMUXER (IFF,  iff);
diff --git a/libavformat/hevcdec.c b/libavformat/hevcdec.c
new file mode 100644
index 000..f3b0aa3
--- /dev/null
+++ b/libavformat/hevcdec.c
@@ -0,0 +1,64 @@
+/*
+ * RAW HEVC video demuxer
+ * Copyright (c) 2013 Dirk Farin dirk.fa...@gmail.com
+ *
+ * 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 avformat.h
+#include rawdec.h
+
+#include libavcodec/hevc.h
+
+static int hevc_probe(AVProbeData *p)
+{
+uint32_t code = -1;
+int vps = 0, sps = 0, pps = 0, irap = 0;
+int i;
+
+for (i = 0; i  p-buf_size - 1; i++) {
+code = (code  8) + p-buf[i];
+if ((code  0xff00) == 0x100) {
+uint8_t nal2 = p-buf[i + 1];
+int type = (code  0x7E)  1;
+
+if (code  0x81) // forbidden and reserved zero bits
+return 0;
+
+if (nal2  0xf8) // reserved zero
+return 0;
+
+switch (type) {
+case NAL_VPS:vps++;  break;
+case NAL_SPS:sps++;  break;
+case NAL_PPS:pps++;  break;
+case NAL_BLA_N_LP:
+case NAL_BLA_W_LP:
+case NAL_BLA_W_RADL:
+case NAL_CRA_NUT:
+case NAL_IDR_N_LP:
+case NAL_IDR_W_RADL: irap++; break;
+}
+}
+}
+
+if (vps  sps  pps  irap)
+return AVPROBE_SCORE_EXTENSION + 1; // 1 more than .mpg
+return 0;
+}
+
+FF_DEF_RAWVIDEO_DEMUXER(hevc, raw HEVC video, hevc_probe, hevc,h265,265, 
AV_CODEC_ID_HEVC)
-- 
1.7.10.4

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


Re: [libav-devel] [PATCH 1/3] lavf: add a raw HEVC demuxer

2013-09-27 Thread Diego Biurrun
On Fri, Sep 27, 2013 at 03:26:10PM +0200, Anton Khirnov wrote:
 ---
  libavformat/Makefile |1 +
  libavformat/allformats.c |1 +
  libavformat/hevcdec.c|   64 
 ++
  3 files changed, 66 insertions(+)
  create mode 100644 libavformat/hevcdec.c

Changelog, docs, version bump?

 --- /dev/null
 +++ b/libavformat/hevcdec.c
 @@ -0,0 +1,64 @@
 +
 +#include avformat.h
 +#include rawdec.h
 +
 +#include libavcodec/hevc.h

I think we agreed to order this

#include libavcodec/hevc.h
#include avformat.h
#include rawdec.h

in the header cleanup patchset discussion.

 +switch (type) {
 +case NAL_VPS:vps++;  break;
 +case NAL_SPS:sps++;  break;
 +case NAL_PPS:pps++;  break;
 +case NAL_BLA_N_LP:
 +case NAL_BLA_W_LP:
 +case NAL_BLA_W_RADL:
 +case NAL_CRA_NUT:
 +case NAL_IDR_N_LP:
 +case NAL_IDR_W_RADL: irap++; break;

Please break the lines.

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


Re: [libav-devel] [PATCH 1/3] lavf: add a raw HEVC demuxer

2013-09-27 Thread Luca Barbato
On 27/09/13 15:37, Diego Biurrun wrote:
 On Fri, Sep 27, 2013 at 03:26:10PM +0200, Anton Khirnov wrote:
 ---
  libavformat/Makefile |1 +
  libavformat/allformats.c |1 +
  libavformat/hevcdec.c|   64 
 ++
  3 files changed, 66 insertions(+)
  create mode 100644 libavformat/hevcdec.c
 
 Changelog, docs, version bump?
 
 --- /dev/null
 +++ b/libavformat/hevcdec.c
 @@ -0,0 +1,64 @@
 +
 +#include avformat.h
 +#include rawdec.h
 +
 +#include libavcodec/hevc.h
 
 I think we agreed to order this

My proposal got two +1, nobody put it in the documentation.

If there is agreement we should go forward and spend a weekend cleaning
up everything (and then I'll spend a week rebasing my trees)

lu

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


Re: [libav-devel] [PATCH 1/3] lavf: add a raw HEVC demuxer

2013-09-27 Thread Vittorio Giovara
On Fri, Sep 27, 2013 at 3:51 PM, Luca Barbato lu_z...@gentoo.org wrote:
 +
 +#include avformat.h
 +#include rawdec.h
 +
 +#include libavcodec/hevc.h

 I think we agreed to order this

 My proposal got two +1, nobody put it in the documentation.


I can add that in the next iteration of the cleanup patchset.

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