FFmpeg
libavformat
dvbtxt.c
Go to the documentation of this file.
1
/*
2
* RAW dvb teletext demuxer
3
* Copyright (c) 2016 Marton Balnt <cus@passwd.hu>
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/dvbtxt.h
"
23
24
#include "
avformat.h
"
25
#include "
rawdec.h
"
26
27
static
int
dvbtxt_probe
(
const
AVProbeData
*p)
28
{
29
const
uint8_t
*end = p->
buf
+ p->
buf_size
;
30
const
uint8_t
*buf;
31
32
/* The purpose of this is demuxer is to detect DVB teletext streams in
33
* mpegts, so we reject invalid buffer sizes */
34
if
((p->
buf_size
+ 45) % 184 != 0)
35
return
0;
36
37
if
(!
ff_data_identifier_is_teletext
(p->
buf
[0]))
38
return
0;
39
40
for
(buf = p->
buf
+ 1; buf < end; buf += 46) {
41
if
(!
ff_data_unit_id_is_teletext
(buf[0]) && buf[0] != 0xff)
42
return
0;
43
if
(buf[1] != 0x2c)
// data_unit_length
44
return
0;
45
}
46
47
return
AVPROBE_SCORE_MAX
/ 2;
48
}
49
50
FF_DEF_RAWSUB_DEMUXER
(dvbtxt,
"dvbtxt"
,
dvbtxt_probe
,
NULL
,
AV_CODEC_ID_DVB_TELETEXT
, 0)
AV_CODEC_ID_DVB_TELETEXT
@ AV_CODEC_ID_DVB_TELETEXT
Definition:
codec_id.h:530
ff_data_identifier_is_teletext
static av_always_inline int ff_data_identifier_is_teletext(int data_identifier)
Definition:
dvbtxt.h:28
AVProbeData::buf_size
int buf_size
Size of buf except extra allocated bytes.
Definition:
avformat.h:444
AVPROBE_SCORE_MAX
#define AVPROBE_SCORE_MAX
maximum score
Definition:
avformat.h:453
FF_DEF_RAWSUB_DEMUXER
#define FF_DEF_RAWSUB_DEMUXER(shortname, longname, probe, ext, id, flag)
Definition:
rawdec.h:97
dvbtxt.h
AVProbeData::buf
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
Definition:
avformat.h:443
NULL
#define NULL
Definition:
coverity.c:32
rawdec.h
AVProbeData
This structure contains the data a format has to probe a file.
Definition:
avformat.h:441
ff_data_unit_id_is_teletext
static av_always_inline int ff_data_unit_id_is_teletext(int data_unit_id)
Definition:
dvbtxt.h:36
dvbtxt_probe
static int dvbtxt_probe(const AVProbeData *p)
Definition:
dvbtxt.c:27
uint8_t
uint8_t
Definition:
audio_convert.c:194
avformat.h
Generated on Wed Aug 24 2022 21:34:41 for FFmpeg by
1.8.17