committed by
					
						
						Anton Khirnov
					
				
			
			
				
	
			
			
			
						parent
						
							e1c058dba9
						
					
				
				
					commit
					5846646296
				
			@@ -42,6 +42,7 @@ version 10:
 | 
				
			|||||||
- F4V muxer
 | 
					- F4V muxer
 | 
				
			||||||
- HNM version 4 demuxer and video decoder
 | 
					- HNM version 4 demuxer and video decoder
 | 
				
			||||||
- HEVC decoder
 | 
					- HEVC decoder
 | 
				
			||||||
 | 
					- raw HEVC demuxer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 9:
 | 
					version 9:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -272,6 +272,7 @@ library:
 | 
				
			|||||||
@item raw H.261                 @tab X @tab X
 | 
					@item raw H.261                 @tab X @tab X
 | 
				
			||||||
@item raw H.263                 @tab X @tab X
 | 
					@item raw H.263                 @tab X @tab X
 | 
				
			||||||
@item raw H.264                 @tab X @tab X
 | 
					@item raw H.264                 @tab X @tab X
 | 
				
			||||||
 | 
					@item raw HEVC                  @tab   @tab X
 | 
				
			||||||
@item raw Ingenient MJPEG       @tab   @tab X
 | 
					@item raw Ingenient MJPEG       @tab   @tab X
 | 
				
			||||||
@item raw MJPEG                 @tab X @tab X
 | 
					@item raw MJPEG                 @tab X @tab X
 | 
				
			||||||
@item raw MLP                   @tab   @tab X
 | 
					@item raw MLP                   @tab   @tab X
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -140,6 +140,7 @@ OBJS-$(CONFIG_H263_DEMUXER)              += h263dec.o rawdec.o
 | 
				
			|||||||
OBJS-$(CONFIG_H263_MUXER)                += rawenc.o
 | 
					OBJS-$(CONFIG_H263_MUXER)                += rawenc.o
 | 
				
			||||||
OBJS-$(CONFIG_H264_DEMUXER)              += h264dec.o rawdec.o
 | 
					OBJS-$(CONFIG_H264_DEMUXER)              += h264dec.o rawdec.o
 | 
				
			||||||
OBJS-$(CONFIG_H264_MUXER)                += rawenc.o
 | 
					OBJS-$(CONFIG_H264_MUXER)                += rawenc.o
 | 
				
			||||||
 | 
					OBJS-$(CONFIG_HEVC_DEMUXER)              += hevcdec.o rawdec.o
 | 
				
			||||||
OBJS-$(CONFIG_HLS_DEMUXER)               += hls.o
 | 
					OBJS-$(CONFIG_HLS_DEMUXER)               += hls.o
 | 
				
			||||||
OBJS-$(CONFIG_HLS_MUXER)                 += hlsenc.o
 | 
					OBJS-$(CONFIG_HLS_MUXER)                 += hlsenc.o
 | 
				
			||||||
OBJS-$(CONFIG_HNM_DEMUXER)               += hnm.o
 | 
					OBJS-$(CONFIG_HNM_DEMUXER)               += hnm.o
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,6 +117,7 @@ void av_register_all(void)
 | 
				
			|||||||
    REGISTER_MUXDEMUX(H261,             h261);
 | 
					    REGISTER_MUXDEMUX(H261,             h261);
 | 
				
			||||||
    REGISTER_MUXDEMUX(H263,             h263);
 | 
					    REGISTER_MUXDEMUX(H263,             h263);
 | 
				
			||||||
    REGISTER_MUXDEMUX(H264,             h264);
 | 
					    REGISTER_MUXDEMUX(H264,             h264);
 | 
				
			||||||
 | 
					    REGISTER_DEMUXER (HEVC,             hevc);
 | 
				
			||||||
    REGISTER_MUXDEMUX(HLS,              hls);
 | 
					    REGISTER_MUXDEMUX(HLS,              hls);
 | 
				
			||||||
    REGISTER_DEMUXER (HNM,              hnm);
 | 
					    REGISTER_DEMUXER (HNM,              hnm);
 | 
				
			||||||
    REGISTER_DEMUXER (IDCIN,            idcin);
 | 
					    REGISTER_DEMUXER (IDCIN,            idcin);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										64
									
								
								libavformat/hevcdec.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								libavformat/hevcdec.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * RAW HEVC video demuxer
 | 
				
			||||||
 | 
					 * Copyright (c) 2013 Dirk Farin <dirk.farin@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 "libavcodec/hevc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "avformat.h"
 | 
				
			||||||
 | 
					#include "rawdec.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 & 0xffffff00) == 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)
 | 
				
			||||||
@@ -30,7 +30,7 @@
 | 
				
			|||||||
#include "libavutil/avutil.h"
 | 
					#include "libavutil/avutil.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define LIBAVFORMAT_VERSION_MAJOR 55
 | 
					#define LIBAVFORMAT_VERSION_MAJOR 55
 | 
				
			||||||
#define LIBAVFORMAT_VERSION_MINOR  8
 | 
					#define LIBAVFORMAT_VERSION_MINOR  9
 | 
				
			||||||
#define LIBAVFORMAT_VERSION_MICRO  0
 | 
					#define LIBAVFORMAT_VERSION_MICRO  0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
 | 
					#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user