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
01aa664f
Commit
01aa664f
authored
Sep 29, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cyuv: implement raw cyuv
Fixes Ticket1620 Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
99b18b11
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
2 deletions
+16
-2
cyuv.c
libavcodec/cyuv.c
+16
-2
No files found.
libavcodec/cyuv.c
View file @
01aa664f
...
...
@@ -53,7 +53,6 @@ static av_cold int cyuv_decode_init(AVCodecContext *avctx)
if
(
s
->
width
&
0x3
)
return
-
1
;
s
->
height
=
avctx
->
height
;
avctx
->
pix_fmt
=
PIX_FMT_YUV411P
;
avcodec_get_frame_defaults
(
&
s
->
frame
);
return
0
;
...
...
@@ -83,6 +82,7 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
int
stream_ptr
;
unsigned
char
cur_byte
;
int
pixel_groups
;
int
rawsize
=
s
->
height
*
FFALIGN
(
s
->
width
,
2
)
*
2
;
if
(
avctx
->
codec_id
==
AV_CODEC_ID_AURA
)
{
y_table
=
u_table
;
...
...
@@ -92,7 +92,11 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
* followed by (height) lines each with 3 bytes to represent groups
* of 4 pixels. Thus, the total size of the buffer ought to be:
* (3 * 16) + height * (width * 3 / 4) */
if
(
buf_size
!=
48
+
s
->
height
*
(
s
->
width
*
3
/
4
))
{
if
(
buf_size
==
48
+
s
->
height
*
(
s
->
width
*
3
/
4
))
{
avctx
->
pix_fmt
=
PIX_FMT_YUV411P
;
}
else
if
(
buf_size
==
rawsize
)
{
avctx
->
pix_fmt
=
PIX_FMT_UYVY422
;
}
else
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"got a buffer with %d bytes when %d were expected
\n
"
,
buf_size
,
48
+
s
->
height
*
(
s
->
width
*
3
/
4
));
return
-
1
;
...
...
@@ -115,6 +119,15 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
u_plane
=
s
->
frame
.
data
[
1
];
v_plane
=
s
->
frame
.
data
[
2
];
if
(
buf_size
==
rawsize
)
{
int
linesize
=
FFALIGN
(
s
->
width
,
2
)
*
2
;
y_plane
+=
s
->
frame
.
linesize
[
0
]
*
s
->
height
;
for
(
stream_ptr
=
0
;
stream_ptr
<
rawsize
;
stream_ptr
+=
linesize
)
{
y_plane
-=
s
->
frame
.
linesize
[
0
];
memcpy
(
y_plane
,
buf
+
stream_ptr
,
linesize
);
}
}
else
{
/* iterate through each line in the height */
for
(
y_ptr
=
0
,
u_ptr
=
0
,
v_ptr
=
0
;
y_ptr
<
(
s
->
height
*
s
->
frame
.
linesize
[
0
]);
...
...
@@ -162,6 +175,7 @@ static int cyuv_decode_frame(AVCodecContext *avctx,
}
}
}
*
data_size
=
sizeof
(
AVFrame
);
*
(
AVFrame
*
)
data
=
s
->
frame
;
...
...
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