Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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 @@
...
@@ -24,6 +24,7 @@
#include "libavutil/error.h"
#include "libavutil/error.h"
#include "dca.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "put_bits.h"
#include "put_bits.h"
const
uint32_t
avpriv_dca_sample_rates
[
16
]
=
{
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,
...
@@ -45,18 +46,18 @@ int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,
mrk
=
AV_RB32
(
src
);
mrk
=
AV_RB32
(
src
);
switch
(
mrk
)
{
switch
(
mrk
)
{
case
DCA_
MARKER_RAW
_BE
:
case
DCA_
SYNCWORD_CORE
_BE
:
memcpy
(
dst
,
src
,
src_size
);
memcpy
(
dst
,
src
,
src_size
);
return
src_size
;
return
src_size
;
case
DCA_
MARKER_RAW
_LE
:
case
DCA_
SYNCWORD_CORE
_LE
:
for
(
i
=
0
;
i
<
(
src_size
+
1
)
>>
1
;
i
++
)
for
(
i
=
0
;
i
<
(
src_size
+
1
)
>>
1
;
i
++
)
*
sdst
++
=
av_bswap16
(
*
ssrc
++
);
*
sdst
++
=
av_bswap16
(
*
ssrc
++
);
return
src_size
;
return
src_size
;
case
DCA_
MARKER
_14B_BE
:
case
DCA_
SYNCWORD_CORE
_14B_BE
:
case
DCA_
MARKER
_14B_LE
:
case
DCA_
SYNCWORD_CORE
_14B_LE
:
init_put_bits
(
&
pb
,
dst
,
max_size
);
init_put_bits
(
&
pb
,
dst
,
max_size
);
for
(
i
=
0
;
i
<
(
src_size
+
1
)
>>
1
;
i
++
,
src
+=
2
)
{
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
);
put_bits
(
&
pb
,
14
,
tmp
);
}
}
flush_put_bits
(
&
pb
);
flush_put_bits
(
&
pb
);
...
...
libavcodec/dca.h
View file @
25f613f8
...
@@ -35,15 +35,6 @@
...
@@ -35,15 +35,6 @@
#include "fmtconvert.h"
#include "fmtconvert.h"
#include "get_bits.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_PRIM_CHANNELS_MAX (7)
#define DCA_ABITS_MAX (32)
/* Should be 28 */
#define DCA_ABITS_MAX (32)
/* Should be 28 */
#define DCA_SUBSUBFRAMES_MAX (4)
#define DCA_SUBSUBFRAMES_MAX (4)
...
...
libavcodec/dca_parser.c
View file @
25f613f8
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
*/
*/
#include "dca.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "get_bits.h"
#include "get_bits.h"
#include "parser.h"
#include "parser.h"
...
@@ -35,9 +36,9 @@ typedef struct DCAParseContext {
...
@@ -35,9 +36,9 @@ typedef struct DCAParseContext {
}
DCAParseContext
;
}
DCAParseContext
;
#define IS_MARKER(state, i, buf, buf_size) \
#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_
SYNCWORD_CORE
_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_
SYNCWORD_CORE
_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_LE || state == DCA_SYNCWORD_CORE
_BE)
/**
/**
* Find the end of the current frame in the bitstream.
* 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,
...
@@ -75,7 +76,7 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf,
for
(;
i
<
buf_size
;
i
++
)
{
for
(;
i
<
buf_size
;
i
++
)
{
pc1
->
size
++
;
pc1
->
size
++
;
state
=
(
state
<<
8
)
|
buf
[
i
];
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
;
pc1
->
hd_pos
=
pc1
->
size
;
if
(
state
==
pc1
->
lastmarker
&&
IS_MARKER
(
state
,
i
,
buf
,
buf_size
))
{
if
(
state
==
pc1
->
lastmarker
&&
IS_MARKER
(
state
,
i
,
buf
,
buf_size
))
{
if
(
pc1
->
framesize
>
pc1
->
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 @@
...
@@ -37,6 +37,7 @@
#include "avcodec.h"
#include "avcodec.h"
#include "dca.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "dcadata.h"
#include "dcadata.h"
#include "dcadsp.h"
#include "dcadsp.h"
#include "dcahuff.h"
#include "dcahuff.h"
...
@@ -1100,7 +1101,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -1100,7 +1101,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
uint32_t
bits
=
get_bits_long
(
&
s
->
gb
,
32
);
uint32_t
bits
=
get_bits_long
(
&
s
->
gb
,
32
);
switch
(
bits
)
{
switch
(
bits
)
{
case
0x5a5a5a5a
:
{
case
DCA_SYNCWORD_XCH
:
{
int
ext_amode
,
xch_fsize
;
int
ext_amode
,
xch_fsize
;
s
->
xch_base_channel
=
s
->
prim_channels
;
s
->
xch_base_channel
=
s
->
prim_channels
;
...
@@ -1137,7 +1138,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -1137,7 +1138,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
s
->
xch_present
=
1
;
s
->
xch_present
=
1
;
break
;
break
;
}
}
case
0x47004a03
:
case
DCA_SYNCWORD_XXCH
:
/* XXCh: extended channels */
/* XXCh: extended channels */
/* usually found either in core or HD part in DTS-HD HRA streams,
/* usually found either in core or HD part in DTS-HD HRA streams,
* but not in DTS-ES which contains XCh extensions instead */
* but not in DTS-ES which contains XCh extensions instead */
...
@@ -1174,7 +1175,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
...
@@ -1174,7 +1175,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
/* check for ExSS (HD part) */
/* check for ExSS (HD part) */
if
(
s
->
dca_buffer_size
-
s
->
frame_size
>
32
&&
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
);
ff_dca_exss_parse_header
(
s
);
avctx
->
profile
=
s
->
profile
;
avctx
->
profile
=
s
->
profile
;
...
...
libavformat/dtsdec.c
View file @
25f613f8
...
@@ -20,14 +20,11 @@
...
@@ -20,14 +20,11 @@
*/
*/
#include "libavcodec/bytestream.h"
#include "libavcodec/bytestream.h"
#include "libavcodec/dca_syncwords.h"
#include "avformat.h"
#include "avformat.h"
#include "rawdec.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
)
static
int
dts_probe
(
AVProbeData
*
p
)
{
{
const
uint8_t
*
buf
,
*
bufp
;
const
uint8_t
*
buf
,
*
bufp
;
...
@@ -42,16 +39,16 @@ static int dts_probe(AVProbeData *p)
...
@@ -42,16 +39,16 @@ static int dts_probe(AVProbeData *p)
state
=
(
state
<<
16
)
|
bytestream_get_be16
(
&
bufp
);
state
=
(
state
<<
16
)
|
bytestream_get_be16
(
&
bufp
);
/* regular bitstream */
/* 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
]
++
;
markers
[
0
]
++
;
/* 14 bits big-endian bitstream */
/* 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
)
if
((
bytestream_get_be16
(
&
bufp
)
&
0xFFF0
)
==
0x07F0
)
markers
[
1
]
++
;
markers
[
1
]
++
;
/* 14 bits little-endian bitstream */
/* 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
)
if
((
bytestream_get_be16
(
&
bufp
)
&
0xF0FF
)
==
0xF007
)
markers
[
2
]
++
;
markers
[
2
]
++
;
}
}
...
...
libavformat/spdifenc.c
View file @
25f613f8
...
@@ -51,6 +51,7 @@
...
@@ -51,6 +51,7 @@
#include "spdif.h"
#include "spdif.h"
#include "libavcodec/ac3.h"
#include "libavcodec/ac3.h"
#include "libavcodec/dca.h"
#include "libavcodec/dca.h"
#include "libavcodec/dca_syncwords.h"
#include "libavcodec/aacadtsdec.h"
#include "libavcodec/aacadtsdec.h"
#include "libavutil/opt.h"
#include "libavutil/opt.h"
...
@@ -251,25 +252,25 @@ static int spdif_header_dts(AVFormatContext *s, AVPacket *pkt)
...
@@ -251,25 +252,25 @@ static int spdif_header_dts(AVFormatContext *s, AVPacket *pkt)
return
AVERROR_INVALIDDATA
;
return
AVERROR_INVALIDDATA
;
switch
(
syncword_dts
)
{
switch
(
syncword_dts
)
{
case
DCA_
MARKER_RAW
_BE
:
case
DCA_
SYNCWORD_CORE
_BE
:
blocks
=
(
AV_RB16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
blocks
=
(
AV_RB16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
core_size
=
((
AV_RB24
(
pkt
->
data
+
5
)
>>
4
)
&
0x3fff
)
+
1
;
core_size
=
((
AV_RB24
(
pkt
->
data
+
5
)
>>
4
)
&
0x3fff
)
+
1
;
sample_rate
=
avpriv_dca_sample_rates
[(
pkt
->
data
[
8
]
>>
2
)
&
0x0f
];
sample_rate
=
avpriv_dca_sample_rates
[(
pkt
->
data
[
8
]
>>
2
)
&
0x0f
];
break
;
break
;
case
DCA_
MARKER_RAW
_LE
:
case
DCA_
SYNCWORD_CORE
_LE
:
blocks
=
(
AV_RL16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
blocks
=
(
AV_RL16
(
pkt
->
data
+
4
)
>>
2
)
&
0x7f
;
ctx
->
extra_bswap
=
1
;
ctx
->
extra_bswap
=
1
;
break
;
break
;
case
DCA_
MARKER
_14B_BE
:
case
DCA_
SYNCWORD_CORE
_14B_BE
:
blocks
=
blocks
=
(((
pkt
->
data
[
5
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
6
]
&
0x3f
)
>>
2
));
(((
pkt
->
data
[
5
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
6
]
&
0x3f
)
>>
2
));
break
;
break
;
case
DCA_
MARKER
_14B_LE
:
case
DCA_
SYNCWORD_CORE
_14B_LE
:
blocks
=
blocks
=
(((
pkt
->
data
[
4
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
7
]
&
0x3f
)
>>
2
));
(((
pkt
->
data
[
4
]
&
0x07
)
<<
4
)
|
((
pkt
->
data
[
7
]
&
0x3f
)
>>
2
));
ctx
->
extra_bswap
=
1
;
ctx
->
extra_bswap
=
1
;
break
;
break
;
case
DCA_
HD_MARKER
:
case
DCA_
SYNCWORD_SUBSTREAM
:
/* We only handle HD frames that are paired with core. However,
/* We only handle HD frames that are paired with core. However,
sometimes DTS-HD streams with core have a stray HD frame without
sometimes DTS-HD streams with core have a stray HD frame without
core in the beginning of the stream. */
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