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
dvbsub.c
Go to the documentation of this file.
1
/*
2
* RAW dvbsub demuxer
3
* Copyright (c) 2015 Michael Niedermayer <michaelni@gmx.at>
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 "
libavutil/intreadwrite.h
"
23
24
#include "
avformat.h
"
25
#include "
rawdec.h
"
26
27
28
static
int
dvbsub_probe
(
AVProbeData
*p)
29
{
30
int
i, j, k;
31
const
uint8_t
*
end
= p->
buf
+ p->
buf_size
;
32
int
type
,
len
;
33
int
max_score = 0;
34
35
for
(i=0; i<p->
buf_size
; i++){
36
if
(p->
buf
[i] == 0x0f) {
37
const
uint8_t
*ptr = p->
buf
+ i;
38
uint8_t
histogram[6] = {0};
39
int
min
= 255;
40
for
(j=0; ptr + 6 <
end
; j++) {
41
if
(*ptr != 0x0f)
42
break
;
43
type = ptr[1];
44
//page_id = AV_RB16(ptr + 2);
45
len =
AV_RB16
(ptr + 4);
46
if
(type == 0x80) {
47
;
48
}
else
if
(type >= 0x10 && type <= 0x14) {
49
histogram[type - 0x10] ++;
50
}
else
51
break
;
52
ptr += 6 +
len
;
53
}
54
for
(k=0; k < 4; k++) {
55
min =
FFMIN
(min, histogram[k]);
56
}
57
if
(min && j > max_score)
58
max_score = j;
59
}
60
}
61
62
if
(max_score > 5)
63
return
AVPROBE_SCORE_EXTENSION
;
64
65
return
0;
66
}
67
68
FF_DEF_RAWSUB_DEMUXER
(dvbsub,
"raw dvbsub"
,
dvbsub_probe
,
NULL
,
AV_CODEC_ID_DVB_SUBTITLE
,
AVFMT_GENERIC_INDEX
)
Generated on Sun Mar 8 2015 02:34:50 for FFmpeg by
1.8.2