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
a7984a6a
Commit
a7984a6a
authored
Sep 21, 2011
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
smacker: Separate audio flags from sample rates in smacker demuxer.
Makes the code easier to understand.
parent
be1242a3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
14 deletions
+17
-14
smacker.c
libavformat/smacker.c
+17
-14
No files found.
libavformat/smacker.c
View file @
a7984a6a
...
...
@@ -31,11 +31,11 @@
#define SMACKER_FLAG_RING_FRAME 0x01
enum
SAudFlags
{
SMK_AUD_PACKED
=
0x80
000000
,
SMK_AUD_16BITS
=
0x20
000000
,
SMK_AUD_STEREO
=
0x10
000000
,
SMK_AUD_BINKAUD
=
0x08
000000
,
SMK_AUD_USEDCT
=
0x04
000000
SMK_AUD_PACKED
=
0x80
,
SMK_AUD_16BITS
=
0x20
,
SMK_AUD_STEREO
=
0x10
,
SMK_AUD_BINKAUD
=
0x08
,
SMK_AUD_USEDCT
=
0x04
};
typedef
struct
SmackerContext
{
...
...
@@ -48,6 +48,7 @@ typedef struct SmackerContext {
uint32_t
audio
[
7
];
uint32_t
treesize
;
uint32_t
mmap_size
,
mclr_size
,
full_size
,
type_size
;
uint8_t
aflags
[
7
];
uint32_t
rates
[
7
];
uint32_t
pad
;
/* frame info */
...
...
@@ -129,8 +130,10 @@ static int smacker_read_header(AVFormatContext *s, AVFormatParameters *ap)
smk
->
mclr_size
=
avio_rl32
(
pb
);
smk
->
full_size
=
avio_rl32
(
pb
);
smk
->
type_size
=
avio_rl32
(
pb
);
for
(
i
=
0
;
i
<
7
;
i
++
)
smk
->
rates
[
i
]
=
avio_rl32
(
pb
);
for
(
i
=
0
;
i
<
7
;
i
++
)
{
smk
->
rates
[
i
]
=
avio_rl24
(
pb
);
smk
->
aflags
[
i
]
=
avio_r8
(
pb
);
}
smk
->
pad
=
avio_rl32
(
pb
);
/* setup data */
if
(
smk
->
frames
>
0xFFFFFF
)
{
...
...
@@ -173,23 +176,23 @@ static int smacker_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* handle possible audio streams */
for
(
i
=
0
;
i
<
7
;
i
++
)
{
smk
->
indexes
[
i
]
=
-
1
;
if
(
smk
->
rates
[
i
]
&
0xFFFFFF
)
{
if
(
smk
->
rates
[
i
])
{
ast
[
i
]
=
av_new_stream
(
s
,
0
);
smk
->
indexes
[
i
]
=
ast
[
i
]
->
index
;
ast
[
i
]
->
codec
->
codec_type
=
AVMEDIA_TYPE_AUDIO
;
if
(
smk
->
rate
s
[
i
]
&
SMK_AUD_BINKAUD
)
{
if
(
smk
->
aflag
s
[
i
]
&
SMK_AUD_BINKAUD
)
{
ast
[
i
]
->
codec
->
codec_id
=
CODEC_ID_BINKAUDIO_RDFT
;
}
else
if
(
smk
->
rate
s
[
i
]
&
SMK_AUD_USEDCT
)
{
}
else
if
(
smk
->
aflag
s
[
i
]
&
SMK_AUD_USEDCT
)
{
ast
[
i
]
->
codec
->
codec_id
=
CODEC_ID_BINKAUDIO_DCT
;
}
else
if
(
smk
->
rate
s
[
i
]
&
SMK_AUD_PACKED
){
}
else
if
(
smk
->
aflag
s
[
i
]
&
SMK_AUD_PACKED
){
ast
[
i
]
->
codec
->
codec_id
=
CODEC_ID_SMACKAUDIO
;
ast
[
i
]
->
codec
->
codec_tag
=
MKTAG
(
'S'
,
'M'
,
'K'
,
'A'
);
}
else
{
ast
[
i
]
->
codec
->
codec_id
=
CODEC_ID_PCM_U8
;
}
ast
[
i
]
->
codec
->
channels
=
(
smk
->
rate
s
[
i
]
&
SMK_AUD_STEREO
)
?
2
:
1
;
ast
[
i
]
->
codec
->
sample_rate
=
smk
->
rates
[
i
]
&
0xFFFFFF
;
ast
[
i
]
->
codec
->
bits_per_coded_sample
=
(
smk
->
rate
s
[
i
]
&
SMK_AUD_16BITS
)
?
16
:
8
;
ast
[
i
]
->
codec
->
channels
=
(
smk
->
aflag
s
[
i
]
&
SMK_AUD_STEREO
)
?
2
:
1
;
ast
[
i
]
->
codec
->
sample_rate
=
smk
->
rates
[
i
];
ast
[
i
]
->
codec
->
bits_per_coded_sample
=
(
smk
->
aflag
s
[
i
]
&
SMK_AUD_16BITS
)
?
16
:
8
;
if
(
ast
[
i
]
->
codec
->
bits_per_coded_sample
==
16
&&
ast
[
i
]
->
codec
->
codec_id
==
CODEC_ID_PCM_U8
)
ast
[
i
]
->
codec
->
codec_id
=
CODEC_ID_PCM_S16LE
;
av_set_pts_info
(
ast
[
i
],
64
,
1
,
ast
[
i
]
->
codec
->
sample_rate
...
...
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