FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
hevcdec.c
Go to the documentation of this file.
1
/*
2
* RAW HEVC video demuxer
3
* Copyright (c) 2013 Dirk Farin <dirk.farin@gmail.com>
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
libavcodec/hevc.h
"
23
24
#include "
avformat.h
"
25
#include "
rawdec.h
"
26
27
static
int
hevc_probe
(
AVProbeData
*p)
28
{
29
uint32_t code = -1;
30
int
vps = 0, sps = 0, pps = 0, irap = 0;
31
int
i;
32
33
for
(i = 0; i < p->
buf_size
- 1; i++) {
34
code = (code << 8) + p->
buf
[i];
35
if
((code & 0xffffff00) == 0x100) {
36
uint8_t
nal2 = p->
buf
[i + 1];
37
int
type
= (code & 0x7E) >> 1;
38
39
if
(code & 0x81)
// forbidden and reserved zero bits
40
return
0;
41
42
if
(nal2 & 0xf8)
// reserved zero
43
return
0;
44
45
switch
(type) {
46
case
NAL_VPS
: vps++;
break
;
47
case
NAL_SPS
: sps++;
break
;
48
case
NAL_PPS
: pps++;
break
;
49
case
NAL_BLA_N_LP
:
50
case
NAL_BLA_W_LP
:
51
case
NAL_BLA_W_RADL
:
52
case
NAL_CRA_NUT
:
53
case
NAL_IDR_N_LP
:
54
case
NAL_IDR_W_RADL
: irap++;
break
;
55
}
56
}
57
}
58
59
if
(vps && sps && pps && irap)
60
return
AVPROBE_SCORE_EXTENSION
+ 1;
// 1 more than .mpg
61
return
0;
62
}
63
64
FF_DEF_RAWVIDEO_DEMUXER
(hevc,
"raw HEVC video"
,
hevc_probe
,
"hevc,h265,265"
,
AV_CODEC_ID_HEVC
)
Generated on Fri Dec 5 2014 04:42:11 for FFmpeg by
1.8.2