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
cf22705e
Commit
cf22705e
authored
Aug 06, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nuv: K&R formatting cosmetics
parent
baac24e6
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
27 deletions
+53
-27
nuv.c
libavcodec/nuv.c
+53
-27
No files found.
libavcodec/nuv.c
View file @
cf22705e
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
* License along with Libav; if not, write to the Free Software
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
*/
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
...
@@ -34,7 +35,7 @@ typedef struct {
...
@@ -34,7 +35,7 @@ typedef struct {
int
quality
;
int
quality
;
int
width
,
height
;
int
width
,
height
;
unsigned
int
decomp_size
;
unsigned
int
decomp_size
;
unsigned
char
*
decomp_buf
;
unsigned
char
*
decomp_buf
;
uint32_t
lq
[
64
],
cq
[
64
];
uint32_t
lq
[
64
],
cq
[
64
];
RTJpegContext
rtj
;
RTJpegContext
rtj
;
DSPContext
dsp
;
DSPContext
dsp
;
...
@@ -69,8 +70,8 @@ static const uint8_t fallback_cquant[] = {
...
@@ -69,8 +70,8 @@ static const uint8_t fallback_cquant[] = {
* @param width width of the video frame
* @param width width of the video frame
* @param height height of the video frame
* @param height height of the video frame
*/
*/
static
void
copy_frame
(
AVFrame
*
f
,
const
uint8_t
*
src
,
static
void
copy_frame
(
AVFrame
*
f
,
const
uint8_t
*
src
,
int
width
,
int
height
)
int
width
,
int
height
)
{
{
AVPicture
pic
;
AVPicture
pic
;
avpicture_fill
(
&
pic
,
src
,
PIX_FMT_YUV420P
,
width
,
height
);
avpicture_fill
(
&
pic
,
src
,
PIX_FMT_YUV420P
,
width
,
height
);
av_picture_copy
((
AVPicture
*
)
f
,
&
pic
,
PIX_FMT_YUV420P
,
width
,
height
);
av_picture_copy
((
AVPicture
*
)
f
,
&
pic
,
PIX_FMT_YUV420P
,
width
,
height
);
...
@@ -79,8 +80,9 @@ static void copy_frame(AVFrame *f, const uint8_t *src,
...
@@ -79,8 +80,9 @@ static void copy_frame(AVFrame *f, const uint8_t *src,
/**
/**
* @brief extract quantization tables from codec data into our context
* @brief extract quantization tables from codec data into our context
*/
*/
static
int
get_quant
(
AVCodecContext
*
avctx
,
NuvContext
*
c
,
static
int
get_quant
(
AVCodecContext
*
avctx
,
NuvContext
*
c
,
const
uint8_t
*
buf
,
const
uint8_t
*
buf
,
int
size
)
{
int
size
)
{
int
i
;
int
i
;
if
(
size
<
2
*
64
*
4
)
{
if
(
size
<
2
*
64
*
4
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"insufficient rtjpeg quant data
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"insufficient rtjpeg quant data
\n
"
);
...
@@ -96,7 +98,8 @@ static int get_quant(AVCodecContext *avctx, NuvContext *c,
...
@@ -96,7 +98,8 @@ static int get_quant(AVCodecContext *avctx, NuvContext *c,
/**
/**
* @brief set quantization tables from a quality value
* @brief set quantization tables from a quality value
*/
*/
static
void
get_quant_quality
(
NuvContext
*
c
,
int
quality
)
{
static
void
get_quant_quality
(
NuvContext
*
c
,
int
quality
)
{
int
i
;
int
i
;
quality
=
FFMAX
(
quality
,
1
);
quality
=
FFMAX
(
quality
,
1
);
for
(
i
=
0
;
i
<
64
;
i
++
)
{
for
(
i
=
0
;
i
<
64
;
i
++
)
{
...
@@ -105,7 +108,9 @@ static void get_quant_quality(NuvContext *c, int quality) {
...
@@ -105,7 +108,9 @@ static void get_quant_quality(NuvContext *c, int quality) {
}
}
}
}
static
int
codec_reinit
(
AVCodecContext
*
avctx
,
int
width
,
int
height
,
int
quality
)
{
static
int
codec_reinit
(
AVCodecContext
*
avctx
,
int
width
,
int
height
,
int
quality
)
{
NuvContext
*
c
=
avctx
->
priv_data
;
NuvContext
*
c
=
avctx
->
priv_data
;
width
=
FFALIGN
(
width
,
2
);
width
=
FFALIGN
(
width
,
2
);
height
=
FFALIGN
(
height
,
2
);
height
=
FFALIGN
(
height
,
2
);
...
@@ -116,19 +121,25 @@ static int codec_reinit(AVCodecContext *avctx, int width, int height, int qualit
...
@@ -116,19 +121,25 @@ static int codec_reinit(AVCodecContext *avctx, int width, int height, int qualit
return
0
;
return
0
;
avctx
->
width
=
c
->
width
=
width
;
avctx
->
width
=
c
->
width
=
width
;
avctx
->
height
=
c
->
height
=
height
;
avctx
->
height
=
c
->
height
=
height
;
av_fast_malloc
(
&
c
->
decomp_buf
,
&
c
->
decomp_size
,
c
->
height
*
c
->
width
*
3
/
2
);
av_fast_malloc
(
&
c
->
decomp_buf
,
&
c
->
decomp_size
,
c
->
height
*
c
->
width
*
3
/
2
);
if
(
!
c
->
decomp_buf
)
{
if
(
!
c
->
decomp_buf
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Can't allocate decompression buffer.
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Can't allocate decompression buffer.
\n
"
);
return
0
;
return
0
;
}
}
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
}
else
if
(
quality
!=
c
->
quality
)
}
else
if
(
quality
!=
c
->
quality
)
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
return
1
;
return
1
;
}
}
static
int
decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
static
int
decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
AVPacket
*
avpkt
)
{
AVPacket
*
avpkt
)
{
const
uint8_t
*
buf
=
avpkt
->
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
int
buf_size
=
avpkt
->
size
;
NuvContext
*
c
=
avctx
->
priv_data
;
NuvContext
*
c
=
avctx
->
priv_data
;
...
@@ -136,9 +147,14 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
...
@@ -136,9 +147,14 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
int
orig_size
=
buf_size
;
int
orig_size
=
buf_size
;
int
keyframe
;
int
keyframe
;
int
result
;
int
result
;
enum
{
NUV_UNCOMPRESSED
=
'0'
,
NUV_RTJPEG
=
'1'
,
enum
{
NUV_RTJPEG_IN_LZO
=
'2'
,
NUV_LZO
=
'3'
,
NUV_UNCOMPRESSED
=
'0'
,
NUV_BLACK
=
'N'
,
NUV_COPY_LAST
=
'L'
}
comptype
;
NUV_RTJPEG
=
'1'
,
NUV_RTJPEG_IN_LZO
=
'2'
,
NUV_LZO
=
'3'
,
NUV_BLACK
=
'N'
,
NUV_COPY_LAST
=
'L'
}
comptype
;
if
(
buf_size
<
12
)
{
if
(
buf_size
<
12
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"coded frame too small
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"coded frame too small
\n
"
);
...
@@ -154,7 +170,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
...
@@ -154,7 +170,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
ret
=
get_quant
(
avctx
,
c
,
buf
,
buf_size
);
ret
=
get_quant
(
avctx
,
c
,
buf
,
buf_size
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
ff_rtjpeg_decode_init
(
&
c
->
rtj
,
&
c
->
dsp
,
c
->
width
,
c
->
height
,
c
->
lq
,
c
->
cq
);
return
orig_size
;
return
orig_size
;
}
}
...
@@ -166,11 +183,14 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
...
@@ -166,11 +183,14 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
switch
(
comptype
)
{
switch
(
comptype
)
{
case
NUV_RTJPEG_IN_LZO
:
case
NUV_RTJPEG_IN_LZO
:
case
NUV_RTJPEG
:
case
NUV_RTJPEG
:
keyframe
=
!
buf
[
2
];
break
;
keyframe
=
!
buf
[
2
];
break
;
case
NUV_COPY_LAST
:
case
NUV_COPY_LAST
:
keyframe
=
0
;
break
;
keyframe
=
0
;
break
;
default:
default:
keyframe
=
1
;
break
;
keyframe
=
1
;
break
;
}
}
// skip rest of the frameheader.
// skip rest of the frameheader.
buf
=
&
buf
[
12
];
buf
=
&
buf
[
12
];
...
@@ -224,20 +244,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
...
@@ -224,20 +244,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
break
;
break
;
}
}
case
NUV_RTJPEG_IN_LZO
:
case
NUV_RTJPEG_IN_LZO
:
case
NUV_RTJPEG
:
{
case
NUV_RTJPEG
:
ff_rtjpeg_decode_frame_yuv420
(
&
c
->
rtj
,
&
c
->
pic
,
buf
,
buf_size
);
ff_rtjpeg_decode_frame_yuv420
(
&
c
->
rtj
,
&
c
->
pic
,
buf
,
buf_size
);
break
;
break
;
}
case
NUV_BLACK
:
case
NUV_BLACK
:
{
memset
(
c
->
pic
.
data
[
0
],
0
,
c
->
width
*
c
->
height
);
memset
(
c
->
pic
.
data
[
0
],
0
,
c
->
width
*
c
->
height
);
memset
(
c
->
pic
.
data
[
1
],
128
,
c
->
width
*
c
->
height
/
4
);
memset
(
c
->
pic
.
data
[
1
],
128
,
c
->
width
*
c
->
height
/
4
);
memset
(
c
->
pic
.
data
[
2
],
128
,
c
->
width
*
c
->
height
/
4
);
memset
(
c
->
pic
.
data
[
2
],
128
,
c
->
width
*
c
->
height
/
4
);
break
;
break
;
}
case
NUV_COPY_LAST
:
case
NUV_COPY_LAST
:
{
/* nothing more to do here */
/* nothing more to do here */
break
;
break
;
}
default:
default:
av_log
(
avctx
,
AV_LOG_ERROR
,
"unknown compression
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"unknown compression
\n
"
);
return
-
1
;
return
-
1
;
...
@@ -248,7 +265,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
...
@@ -248,7 +265,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
return
orig_size
;
return
orig_size
;
}
}
static
av_cold
int
decode_init
(
AVCodecContext
*
avctx
)
{
static
av_cold
int
decode_init
(
AVCodecContext
*
avctx
)
{
NuvContext
*
c
=
avctx
->
priv_data
;
NuvContext
*
c
=
avctx
->
priv_data
;
avctx
->
pix_fmt
=
PIX_FMT_YUV420P
;
avctx
->
pix_fmt
=
PIX_FMT_YUV420P
;
c
->
pic
.
data
[
0
]
=
NULL
;
c
->
pic
.
data
[
0
]
=
NULL
;
...
@@ -256,20 +274,28 @@ static av_cold int decode_init(AVCodecContext *avctx) {
...
@@ -256,20 +274,28 @@ static av_cold int decode_init(AVCodecContext *avctx) {
c
->
quality
=
-
1
;
c
->
quality
=
-
1
;
c
->
width
=
0
;
c
->
width
=
0
;
c
->
height
=
0
;
c
->
height
=
0
;
c
->
codec_frameheader
=
avctx
->
codec_tag
==
MKTAG
(
'R'
,
'J'
,
'P'
,
'G'
);
c
->
codec_frameheader
=
avctx
->
codec_tag
==
MKTAG
(
'R'
,
'J'
,
'P'
,
'G'
);
if
(
avctx
->
extradata_size
)
if
(
avctx
->
extradata_size
)
get_quant
(
avctx
,
c
,
avctx
->
extradata
,
avctx
->
extradata_size
);
get_quant
(
avctx
,
c
,
avctx
->
extradata
,
avctx
->
extradata_size
);
ff_dsputil_init
(
&
c
->
dsp
,
avctx
);
ff_dsputil_init
(
&
c
->
dsp
,
avctx
);
if
(
!
codec_reinit
(
avctx
,
avctx
->
width
,
avctx
->
height
,
-
1
))
if
(
!
codec_reinit
(
avctx
,
avctx
->
width
,
avctx
->
height
,
-
1
))
return
1
;
return
1
;
return
0
;
return
0
;
}
}
static
av_cold
int
decode_end
(
AVCodecContext
*
avctx
)
{
static
av_cold
int
decode_end
(
AVCodecContext
*
avctx
)
{
NuvContext
*
c
=
avctx
->
priv_data
;
NuvContext
*
c
=
avctx
->
priv_data
;
av_freep
(
&
c
->
decomp_buf
);
av_freep
(
&
c
->
decomp_buf
);
if
(
c
->
pic
.
data
[
0
])
if
(
c
->
pic
.
data
[
0
])
avctx
->
release_buffer
(
avctx
,
&
c
->
pic
);
avctx
->
release_buffer
(
avctx
,
&
c
->
pic
);
return
0
;
return
0
;
}
}
...
...
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