FFmpeg
Loading...
Searching...
No Matches
libavcodec
bsf
dca_core.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016 Paul B Mahol
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "
libavcodec/bsf.h
"
22
#include "
libavcodec/bsf_internal.h
"
23
#include "
libavcodec/bytestream.h
"
24
#include "
libavcodec/dca_syncwords.h
"
25
26
static
int
dca_core_init
(
AVBSFContext
*
ctx
)
27
{
28
ctx
->par_out->profile =
AV_PROFILE_UNKNOWN
;
29
30
return
0;
31
}
32
33
static
int
dca_core_filter
(
AVBSFContext
*
ctx
,
AVPacket
*
pkt
)
34
{
35
GetByteContext
gb;
36
uint32_t syncword;
37
int
core_size = 0, ret;
38
39
ret =
ff_bsf_get_packet_ref
(
ctx
,
pkt
);
40
if
(ret < 0)
41
return
ret;
42
43
bytestream2_init
(&gb,
pkt
->data,
pkt
->size);
44
syncword = bytestream2_get_be32(&gb);
45
bytestream2_skip
(&gb, 1);
46
47
switch
(syncword) {
48
case
DCA_SYNCWORD_CORE_BE
:
49
core_size = ((bytestream2_get_be24(&gb) >> 4) & 0x3fff) + 1;
50
break
;
51
}
52
53
if
(core_size > 0 && core_size <= pkt->
size
) {
54
pkt
->size = core_size;
55
}
56
57
return
0;
58
}
59
60
static
const
enum
AVCodecID
codec_ids
[] = {
61
AV_CODEC_ID_DTS
,
AV_CODEC_ID_NONE
,
62
};
63
64
const
FFBitStreamFilter
ff_dca_core_bsf
= {
65
.p.name =
"dca_core"
,
66
.p.codec_ids =
codec_ids
,
67
.init =
dca_core_init
,
68
.filter =
dca_core_filter
,
69
};
codec_ids
static enum AVCodecID codec_ids[]
Definition
aac_adtstoasc.c:146
ctx
static AVFormatContext * ctx
Definition
api-movenc-test.c:49
ff_dca_core_bsf
const FFBitStreamFilter ff_dca_core_bsf
Definition
dca_core.c:64
dca_core_filter
static int dca_core_filter(AVBSFContext *ctx, AVPacket *pkt)
Definition
dca_core.c:33
dca_core_init
static int dca_core_init(AVBSFContext *ctx)
Definition
dca_core.c:26
ff_bsf_get_packet_ref
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
Called by bitstream filters to get packet for filtering.
Definition
bsf.c:254
bsf.h
bsf_internal.h
bytestream.h
bytestream2_init
static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size)
Definition
bytestream.h:137
bytestream2_skip
static av_always_inline void bytestream2_skip(GetByteContext *g, unsigned int size)
Definition
bytestream.h:168
dca_syncwords.h
DCA_SYNCWORD_CORE_BE
#define DCA_SYNCWORD_CORE_BE
Definition
dca_syncwords.h:22
AV_PROFILE_UNKNOWN
#define AV_PROFILE_UNKNOWN
Definition
defs.h:65
pkt
static AVPacket * pkt
Definition
demux_decode.c:55
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition
codec_id.h:47
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition
codec_id.h:48
AV_CODEC_ID_DTS
@ AV_CODEC_ID_DTS
Definition
codec_id.h:457
AVBSFContext
The bitstream filter state.
Definition
bsf.h:68
AVPacket
This structure stores compressed data.
Definition
packet.h:580
FFBitStreamFilter
Definition
bsf_internal.h:29
GetByteContext
Definition
bytestream.h:33
size
int size
Definition
twinvq_data.h:10344
Generated on Fri Sep 11 2026 19:20:50 for FFmpeg by
1.13.2