Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
25f613f8
Commit
25f613f8
authored
Feb 25, 2015
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dca: Move syncword definitions to a separate header
parent
1dc19729
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
34 deletions
+63
-34
dca.c
libavcodec/dca.c
+6
-5
dca.h
libavcodec/dca.h
+0
-9
dca_parser.c
libavcodec/dca_parser.c
+5
-4
dca_syncwords.h
libavcodec/dca_syncwords.h
+37
-0
dcadec.c
libavcodec/dcadec.c
+4
-3
dtsdec.c
libavformat/dtsdec.c
+5
-8
spdifenc.c
libavformat/spdifenc.c
+6
-5
No files found.
libavcodec/dca.c
View file @
25f613f8
...
...
@@ -24,6 +24,7 @@
#include "libavutil/error.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "put_bits.h"
const
uint32_t
avpriv_dca_sample_rates
[
16
]
=
{
...
...
@@ -45,18 +46,18 @@ int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,
mrk
=
AV_RB32
(
src
);
switch
(
mrk
)
{
case
DCA_
MARKER_RAW
_BE
:
case
DCA_
SYNCWORD_CORE
_BE
:
memcpy
(
dst
,
src
,
src_size
);
return
src_size
;
case
DCA_
MARKER_RAW
_LE
:
case
DCA_
SYNCWORD_CORE
_LE
:
for
(
i
=
0
;
i
<
(
src_size
+
1
)
>>
1
;
i
++
)
*
sdst
++
=
av_bswap16
(
*
ssrc
++
);
return
src_size
;
case
DCA_
MARKER
_14B_BE
:
case
DCA_
MARKER
_14B_LE
:
case
DCA_
SYNCWORD_CORE
_14B_BE
:
case
DCA_
SYNCWORD_CORE
_14B_LE
:
init_put_bits
(
&
pb
,
dst
,
max_size
);
for
(
i
=
0
;
i
<
(
src_size
+
1
)
>>
1
;
i
++
,
src
+=
2
)
{
tmp
=
((
mrk
==
DCA_
MARKER
_14B_BE
)
?
AV_RB16
(
src
)
:
AV_RL16
(
src
))
&
0x3FFF
;
tmp
=
((
mrk
==
DCA_
SYNCWORD_CORE
_14B_BE
)
?
AV_RB16
(
src
)
:
AV_RL16
(
src
))
&
0x3FFF
;
put_bits
(
&
pb
,
14
,
tmp
);
}
flush_put_bits
(
&
pb
);
...
...
libavcodec/dca.h
View file @
25f613f8
...
...
@@ -35,15 +35,6 @@
#include "fmtconvert.h"
#include "get_bits.h"
/** DCA syncwords, also used for bitstream type detection */
#define DCA_MARKER_RAW_BE 0x7FFE8001
#define DCA_MARKER_RAW_LE 0xFE7F0180
#define DCA_MARKER_14B_BE 0x1FFFE800
#define DCA_MARKER_14B_LE 0xFF1F00E8
/** DCA-HD specific block starts with this marker. */
#define DCA_HD_MARKER 0x64582025
#define DCA_PRIM_CHANNELS_MAX (7)
#define DCA_ABITS_MAX (32)
/* Should be 28 */
#define DCA_SUBSUBFRAMES_MAX (4)
...
...
libavcodec/dca_parser.c
View file @
25f613f8
...
...
@@ -23,6 +23,7 @@
*/
#include "dca.h"
#include "dca_syncwords.h"
#include "get_bits.h"
#include "parser.h"
...
...
@@ -35,9 +36,9 @@ typedef struct DCAParseContext {
}
DCAParseContext
;
#define IS_MARKER(state, i, buf, buf_size) \
((state == DCA_
MARKER
_14B_LE && (i < buf_size - 2) && (buf[i + 1] & 0xF0) == 0xF0 && buf[i + 2] == 0x07) || \
(state == DCA_
MARKER
_14B_BE && (i < buf_size - 2) && buf[i + 1] == 0x07 && (buf[i + 2] & 0xF0) == 0xF0) || \
state == DCA_
MARKER_RAW_LE || state == DCA_MARKER_RAW
_BE)
((state == DCA_
SYNCWORD_CORE
_14B_LE && (i < buf_size - 2) && (buf[i + 1] & 0xF0) == 0xF0 && buf[i + 2] == 0x07) || \
(state == DCA_
SYNCWORD_CORE
_14B_BE && (i < buf_size - 2) && buf[i + 1] == 0x07 && (buf[i + 2] & 0xF0) == 0xF0) || \
state == DCA_
SYNCWORD_CORE_LE || state == DCA_SYNCWORD_CORE
_BE)
/**
* Find the end of the current frame in the bitstream.
...
...
@@ -75,7 +76,7 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf,
for
(;
i
<
buf_size
;
i
++
)
{
pc1
->
size
++
;
state
=
(
state
<<
8
)
|
buf
[
i
];
if
(
state
==
DCA_
HD_MARKER
&&
!
pc1
->
hd_pos
)
if
(
state
==
DCA_
SYNCWORD_SUBSTREAM
&&
!
pc1
->
hd_pos
)
pc1
->
hd_pos
=
pc1
->
size
;
if
(
state
==
pc1
->
lastmarker
&&
IS_MARKER
(
state
,
i
,
buf
,
buf_size
))
{
if
(
pc1
->
framesize
>
pc1
->
size
)
...
...
libavcodec/dca_syncwords.h
0 → 100644
View file @
25f613f8
/*
* 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
*/
#ifndef AVCODEC_DCA_SYNCWORDS_H
#define AVCODEC_DCA_SYNCWORDS_H
enum
DCASyncwords
{
DCA_SYNCWORD_CORE_BE
=
0x7FFE8001
,
DCA_SYNCWORD_CORE_LE
=
0xFE7F0180
,
DCA_SYNCWORD_CORE_14B_BE
=
0x1FFFE800
,
DCA_SYNCWORD_CORE_14B_LE
=
0xFF1F00E8
,
DCA_SYNCWORD_XCH
=
0x5A5A5A5A
,
DCA_SYNCWORD_XXCH
=
0x47004A03
,
DCA_SYNCWORD_X96
=
0x1D95F262
,
DCA_SYNCWORD_XBR
=
0x655E315E
,
DCA_SYNCWORD_LBR
=
0x0A801921
,
DCA_SYNCWORD_XLL
=
0x41A29547
,
DCA_SYNCWORD_SUBSTREAM
=
0x64582025
,
DCA_SYNCWORD_SUBSTREAM_CORE
=
0x02B09261
,
};
#endif
/* AVCODEC_DCA_SYNCWORDS_H */
libavcodec/dcadec.c
View file @
25f613f8
...
...
@@ -37,6 +37,7 @@
#include "avcodec.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "dcadata.h"
#include "dcadsp.h"
#include "dcahuff.h"
...
...
@@ -1100,7 +1101,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
uint32_t
bits
=
get_bits_long
(
&
s
->
gb
,
32
);
switch
(
bits
)
{
case
0x5a5a5a5a
:
{
case
DCA_SYNCWORD_XCH
:
{
int
ext_amode
,
xch_fsize
;
s
->
xch_base_channel
=
s
->
prim_channels
;
...
...
@@ -1137,7 +1138,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
s
->
xch_present
=
1
;
break
;
}
case
0x47004a03
:
case
DCA_SYNCWORD_XXCH
:
/* XXCh: extended channels */
/* usually found either in core or HD part in DTS-HD HRA streams,
* but not in DTS-ES which contains XCh extensions instead */
...
...
@@ -1174,7 +1175,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
/* check for ExSS (HD part) */
if
(
s
->
dca_buffer_size
-
s
->
frame_size
>
32
&&
get_bits_long
(
&
s
->
gb
,
32
)
==
DCA_
HD_MARKER
)
get_bits_long
(
&
s
->
gb
,
32
)
==
DCA_
SYNCWORD_SUBSTREAM
)
ff_dca_exss_parse_header
(
s
);
avctx
->
profile
=
s
->
profile
;
...
...
libavformat/dtsdec.c
View file @
25f613f8
...
...
@@ -20,14 +20,11 @@
*/
#include "libavcodec/bytestream.h"
#include "libavcodec/dca_syncwords.h"
#include "avformat.h"
#include "rawdec.h"
#define DCA_MARKER_14B_BE 0x1FFFE800
#define DCA_MARKER_14B_LE 0xFF1F00E8
#define DCA_MARKER_RAW_BE 0x7FFE8001
#define DCA_MARKER_RAW_LE 0xFE7F0180
static
int
dts_probe
(
AVProbeData
*
p
)
{
const
uint8_t
*
buf
,
*
bufp
;
...
...
@@ -42,16 +39,16 @@ static int dts_probe(AVProbeData *p)
state
=
(
state
<<
16
)
|
bytestream_get_be16
(
&
bufp
);
/* regular bitstream */
if
(
state
==
DCA_
MARKER_RAW_BE
||
state
==
DCA_MARKER_RAW
_LE
)
if
(
state
==
DCA_
SYNCWORD_CORE_BE
||
state
==
DCA_SYNCWORD_CORE
_LE
)
markers
[
0
]
++
;
/* 14 bits big-endian bitstream */
if
(
state
==
DCA_
MARKER
_14B_BE
)
if
(
state
==
DCA_
SYNCWORD_CORE
_14B_BE
)
if
((
bytestream_get_be16
(
&
bufp
)
&
0xFFF0
)
==
0x07F0
)
markers
[
1
]
++
;
/* 14 bits little-endian bitstream */
if
(
state
==
DCA_
MARKER
_14B_LE
)
if
(
state
==
DCA_
SYNCWORD_CORE
_14B_LE
)
if
((
bytestream_get_be16
(
&
bufp
)
&
0xF0FF
)
==
0xF007
)
markers
[
2
]
++
;
}
...
...
libavformat/spdifenc.c
View file @
25f613f8
...
...
@@ -51,6 +51,7 @@
#include "spdif.h"
#include "libavcodec/ac3.h"
#include "libavcodec/dca.h"
#include "libavcodec/dca_syncwords.h"
#include "libavcodec/aacadtsdec.h"
#include "libavutil/opt.h"
...
...
@@ -251,25 +252,25 @@ static int spdif_header_dts(AVFormatContext *s, AVPacket *pkt)
return
AVERROR_INVALIDDATA
;
switch
(
syncword_dts
)
{
case
DCA_
MARKER_RAW
_BE
:
case
DCA_
SYNCWORD_CORE
_BE
:
blocks
=
(
AV_RB16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
core_size
=
((
AV_RB24
(
pkt
->
data
+
5
)
>>
4
)
&
0x3fff
)
+
1
;
sample_rate
=
avpriv_dca_sample_rates
[(
pkt
->
data
[
8
]
>>
2
)
&
0x0f
];
break
;
case
DCA_
MARKER_RAW
_LE
:
case
DCA_
SYNCWORD_CORE
_LE
:
blocks
=
(
AV_RL16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
ctx
->
extra_bswap
=
1
;
break
;
case
DCA_
MARKER
_14B_BE
:
case
DCA_
SYNCWORD_CORE
_14B_BE
:
blocks
=
(((
pkt
->
data
[
5
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
6
]
&
0x3f
)
>>
2
));
break
;
case
DCA_
MARKER
_14B_LE
:
case
DCA_
SYNCWORD_CORE
_14B_LE
:
blocks
=
(((
pkt
->
data
[
4
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
7
]
&
0x3f
)
>>
2
));
ctx
->
extra_bswap
=
1
;
break
;
case
DCA_
HD_MARKER
:
case
DCA_
SYNCWORD_SUBSTREAM
:
/* We only handle HD frames that are paired with core. However,
sometimes DTS-HD streams with core have a stray HD frame without
core in the beginning of the stream. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment