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
37e2a978
Commit
37e2a978
authored
Nov 16, 2012
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lxfdec: remove deplanarization hack
Signed-off-by:
Paul B Mahol
<
onemda@gmail.com
>
parent
467dfd5d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
30 deletions
+5
-30
lxfdec.c
libavformat/lxfdec.c
+5
-30
No files found.
libavformat/lxfdec.c
View file @
37e2a978
...
...
@@ -48,7 +48,6 @@ static const AVCodecTag lxf_tags[] = {
typedef
struct
{
int
channels
;
///< number of audio channels. zero means no audio
uint8_t
temp
[
LXF_MAX_AUDIO_PACKET
];
///< temp buffer for de-planarizing the audio data
int
frame_number
;
///< current video frame
uint32_t
video_format
,
packet_type
,
extended_size
;
}
LXFDemuxContext
;
...
...
@@ -185,10 +184,10 @@ static int get_packet_header(AVFormatContext *s)
}
switch
(
st
->
codec
->
bits_per_coded_sample
)
{
case
16
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S16LE
;
break
;
case
16
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S16LE
_PLANAR
;
break
;
case
20
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_LXF
;
break
;
case
24
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S24LE
;
break
;
case
32
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S32LE
;
break
;
case
24
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S24LE
_PLANAR
;
break
;
case
32
:
st
->
codec
->
codec_id
=
AV_CODEC_ID_PCM_S32LE
_PLANAR
;
break
;
default:
av_log
(
s
,
AV_LOG_WARNING
,
"only 16-, 20-, 24- and 32-bit PCM currently supported
\n
"
);
...
...
@@ -288,28 +287,10 @@ static int lxf_read_header(AVFormatContext *s)
return
0
;
}
/**
* De-planerize the PCM data in lxf->temp
* FIXME: remove this once support for planar audio is added to libavcodec
*
* @param[out] out where to write the de-planerized data to
* @param[in] bytes the total size of the PCM data
*/
static
void
deplanarize
(
LXFDemuxContext
*
lxf
,
AVStream
*
ast
,
uint8_t
*
out
,
int
bytes
)
{
int
x
,
y
,
z
,
i
,
bytes_per_sample
=
ast
->
codec
->
bits_per_coded_sample
>>
3
;
for
(
z
=
i
=
0
;
z
<
lxf
->
channels
;
z
++
)
for
(
y
=
0
;
y
<
bytes
/
bytes_per_sample
/
lxf
->
channels
;
y
++
)
for
(
x
=
0
;
x
<
bytes_per_sample
;
x
++
,
i
++
)
out
[
x
+
bytes_per_sample
*
(
z
+
y
*
lxf
->
channels
)]
=
lxf
->
temp
[
i
];
}
static
int
lxf_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
{
LXFDemuxContext
*
lxf
=
s
->
priv_data
;
AVIOContext
*
pb
=
s
->
pb
;
uint8_t
*
buf
;
AVStream
*
ast
=
NULL
;
uint32_t
stream
;
int
ret
,
ret2
;
...
...
@@ -339,20 +320,14 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket *pkt)
if
((
ret2
=
av_new_packet
(
pkt
,
ret
))
<
0
)
return
ret2
;
//read non-20-bit audio data into lxf->temp so we can deplanarize it
buf
=
ast
&&
ast
->
codec
->
codec_id
!=
AV_CODEC_ID_PCM_LXF
?
lxf
->
temp
:
pkt
->
data
;
if
((
ret2
=
avio_read
(
pb
,
buf
,
ret
))
!=
ret
)
{
if
((
ret2
=
avio_read
(
pb
,
pkt
->
data
,
ret
))
!=
ret
)
{
av_free_packet
(
pkt
);
return
ret2
<
0
?
ret2
:
AVERROR_EOF
;
}
pkt
->
stream_index
=
stream
;
if
(
ast
)
{
if
(
ast
->
codec
->
codec_id
!=
AV_CODEC_ID_PCM_LXF
)
deplanarize
(
lxf
,
ast
,
pkt
->
data
,
ret
);
}
else
{
if
(
!
ast
)
{
//picture type (0 = closed I, 1 = open I, 2 = P, 3 = B)
if
(((
lxf
->
video_format
>>
22
)
&
0x3
)
<
2
)
pkt
->
flags
|=
AV_PKT_FLAG_KEY
;
...
...
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