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
51a5ddfa
Commit
51a5ddfa
authored
Jul 19, 2012
by
Luca Barbato
Committed by
Diego Biurrun
Jul 22, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libopenjpeg: K&R formatting cosmetics
parent
731fa116
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
57 deletions
+68
-57
libopenjpegdec.c
libavcodec/libopenjpegdec.c
+52
-40
libopenjpegenc.c
libavcodec/libopenjpegenc.c
+16
-17
No files found.
libavcodec/libopenjpegdec.c
View file @
51a5ddfa
...
@@ -20,17 +20,18 @@
...
@@ -20,17 +20,18 @@
*/
*/
/**
/**
* @file
* @file
* JPEG 2000 decoder using libopenjpeg
* JPEG 2000 decoder using libopenjpeg
*/
*/
#define OPJ_STATIC
#include <openjpeg.h>
#include "libavutil/opt.h"
#include "libavutil/imgutils.h"
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "thread.h"
#include "thread.h"
#define OPJ_STATIC
#include <openjpeg.h>
#define JP2_SIG_TYPE 0x6A502020
#define JP2_SIG_TYPE 0x6A502020
#define JP2_SIG_VALUE 0x0D0A870A
#define JP2_SIG_VALUE 0x0D0A870A
...
@@ -89,19 +90,19 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
...
@@ -89,19 +90,19 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
*
data_size
=
0
;
*
data_size
=
0
;
// Check if input is a raw jpeg2k codestream or in jp2 wrapping
// Check if input is a raw jpeg2k codestream or in jp2 wrapping
if
((
AV_RB32
(
buf
)
==
12
)
&&
if
((
AV_RB32
(
buf
)
==
12
)
&&
(
AV_RB32
(
buf
+
4
)
==
JP2_SIG_TYPE
)
&&
(
AV_RB32
(
buf
+
4
)
==
JP2_SIG_TYPE
)
&&
(
AV_RB32
(
buf
+
8
)
==
JP2_SIG_VALUE
))
{
(
AV_RB32
(
buf
+
8
)
==
JP2_SIG_VALUE
))
{
dec
=
opj_create_decompress
(
CODEC_JP2
);
dec
=
opj_create_decompress
(
CODEC_JP2
);
}
else
{
}
else
{
/
/
If the AVPacket contains a jp2c box, then skip to
/
*
If the AVPacket contains a jp2c box, then skip to
// the starting byte of the codestream.
* the starting byte of the codestream. */
if
(
AV_RB32
(
buf
+
4
)
==
AV_RB32
(
"jp2c"
))
if
(
AV_RB32
(
buf
+
4
)
==
AV_RB32
(
"jp2c"
))
buf
+=
8
;
buf
+=
8
;
dec
=
opj_create_decompress
(
CODEC_J2K
);
dec
=
opj_create_decompress
(
CODEC_J2K
);
}
}
if
(
!
dec
)
{
if
(
!
dec
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error initializing decoder.
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error initializing decoder.
\n
"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -113,20 +114,24 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
...
@@ -113,20 +114,24 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
// Tie decoder with decoding parameters
// Tie decoder with decoding parameters
opj_setup_decoder
(
dec
,
&
ctx
->
dec_params
);
opj_setup_decoder
(
dec
,
&
ctx
->
dec_params
);
stream
=
opj_cio_open
((
opj_common_ptr
)
dec
,
buf
,
buf_size
);
stream
=
opj_cio_open
((
opj_common_ptr
)
dec
,
buf
,
buf_size
);
if
(
!
stream
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Codestream could not be opened for reading.
\n
"
);
if
(
!
stream
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Codestream could not be opened for reading.
\n
"
);
opj_destroy_decompress
(
dec
);
opj_destroy_decompress
(
dec
);
return
-
1
;
return
-
1
;
}
}
// Decode the header only
// Decode the header only
.
image
=
opj_decode_with_info
(
dec
,
stream
,
NULL
);
image
=
opj_decode_with_info
(
dec
,
stream
,
NULL
);
opj_cio_close
(
stream
);
opj_cio_close
(
stream
);
if
(
!
image
)
{
if
(
!
image
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding codestream.
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding codestream.
\n
"
);
opj_destroy_decompress
(
dec
);
opj_destroy_decompress
(
dec
);
return
-
1
;
return
-
1
;
}
}
width
=
image
->
x1
-
image
->
x0
;
width
=
image
->
x1
-
image
->
x0
;
height
=
image
->
y1
-
image
->
y0
;
height
=
image
->
y1
-
image
->
y0
;
...
@@ -135,34 +140,41 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
...
@@ -135,34 +140,41 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
height
=
(
height
+
(
1
<<
ctx
->
lowres
)
-
1
)
>>
ctx
->
lowres
;
height
=
(
height
+
(
1
<<
ctx
->
lowres
)
-
1
)
>>
ctx
->
lowres
;
}
}
if
(
av_image_check_size
(
width
,
height
,
0
,
avctx
)
<
0
)
{
if
(
av_image_check_size
(
width
,
height
,
0
,
avctx
)
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"%dx%d dimension invalid.
\n
"
,
width
,
height
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"%dx%d dimension invalid.
\n
"
,
width
,
height
);
goto
done
;
goto
done
;
}
}
avcodec_set_dimensions
(
avctx
,
width
,
height
);
avcodec_set_dimensions
(
avctx
,
width
,
height
);
switch
(
image
->
numcomps
)
switch
(
image
->
numcomps
)
{
{
case
1
:
case
1
:
avctx
->
pix_fmt
=
PIX_FMT_GRAY8
;
avctx
->
pix_fmt
=
PIX_FMT_GRAY8
;
break
;
break
;
case
3
:
if
(
check_image_attributes
(
image
))
{
case
3
:
if
(
check_image_attributes
(
image
))
{
avctx
->
pix_fmt
=
PIX_FMT_RGB24
;
avctx
->
pix_fmt
=
PIX_FMT_RGB24
;
}
else
{
}
else
{
avctx
->
pix_fmt
=
PIX_FMT_GRAY8
;
avctx
->
pix_fmt
=
PIX_FMT_GRAY8
;
av_log
(
avctx
,
AV_LOG_ERROR
,
"Only first component will be used.
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Only first component will be used.
\n
"
);
}
}
break
;
break
;
case
4
:
has_alpha
=
1
;
case
4
:
has_alpha
=
1
;
avctx
->
pix_fmt
=
PIX_FMT_RGBA
;
avctx
->
pix_fmt
=
PIX_FMT_RGBA
;
break
;
break
;
default:
av_log
(
avctx
,
AV_LOG_ERROR
,
"%d components unsupported.
\n
"
,
image
->
numcomps
);
default:
av_log
(
avctx
,
AV_LOG_ERROR
,
"%d components unsupported.
\n
"
,
image
->
numcomps
);
goto
done
;
goto
done
;
}
}
if
(
picture
->
data
[
0
])
if
(
picture
->
data
[
0
])
ff_thread_release_buffer
(
avctx
,
picture
);
ff_thread_release_buffer
(
avctx
,
picture
);
if
(
ff_thread_get_buffer
(
avctx
,
picture
)
<
0
)
{
if
(
ff_thread_get_buffer
(
avctx
,
picture
)
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"ff_thread_get_buffer() failed
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"ff_thread_get_buffer() failed
\n
"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -170,32 +182,32 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
...
@@ -170,32 +182,32 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
ff_thread_finish_setup
(
avctx
);
ff_thread_finish_setup
(
avctx
);
ctx
->
dec_params
.
cp_limit_decoding
=
NO_LIMITATION
;
ctx
->
dec_params
.
cp_limit_decoding
=
NO_LIMITATION
;
// Tie decoder with decoding parameters
// Tie decoder with decoding parameters
.
opj_setup_decoder
(
dec
,
&
ctx
->
dec_params
);
opj_setup_decoder
(
dec
,
&
ctx
->
dec_params
);
stream
=
opj_cio_open
((
opj_common_ptr
)
dec
,
buf
,
buf_size
);
stream
=
opj_cio_open
((
opj_common_ptr
)
dec
,
buf
,
buf_size
);
if
(
!
stream
)
{
if
(
!
stream
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Codestream could not be opened for reading.
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Codestream could not be opened for reading.
\n
"
);
opj_destroy_decompress
(
dec
);
opj_destroy_decompress
(
dec
);
return
-
1
;
return
-
1
;
}
}
// Decode the codestream
// Decode the codestream
.
image
=
opj_decode_with_info
(
dec
,
stream
,
NULL
);
image
=
opj_decode_with_info
(
dec
,
stream
,
NULL
);
opj_cio_close
(
stream
);
opj_cio_close
(
stream
);
for
(
x
=
0
;
x
<
image
->
numcomps
;
x
++
)
{
for
(
x
=
0
;
x
<
image
->
numcomps
;
x
++
)
adjust
[
x
]
=
FFMAX
(
image
->
comps
[
x
].
prec
-
8
,
0
);
adjust
[
x
]
=
FFMAX
(
image
->
comps
[
x
].
prec
-
8
,
0
);
}
for
(
y
=
0
;
y
<
avctx
->
height
;
y
++
)
{
for
(
y
=
0
;
y
<
avctx
->
height
;
y
++
)
{
index
=
y
*
avctx
->
width
;
index
=
y
*
avctx
->
width
;
img_ptr
=
picture
->
data
[
0
]
+
y
*
picture
->
linesize
[
0
];
img_ptr
=
picture
->
data
[
0
]
+
y
*
picture
->
linesize
[
0
];
for
(
x
=
0
;
x
<
avctx
->
width
;
x
++
,
index
++
)
{
for
(
x
=
0
;
x
<
avctx
->
width
;
x
++
,
index
++
)
{
*
img_ptr
++
=
image
->
comps
[
0
].
data
[
index
]
>>
adjust
[
0
];
*
img_ptr
++
=
image
->
comps
[
0
].
data
[
index
]
>>
adjust
[
0
];
if
(
image
->
numcomps
>
2
&&
check_image_attributes
(
image
))
{
if
(
image
->
numcomps
>
2
&&
check_image_attributes
(
image
))
{
*
img_ptr
++
=
image
->
comps
[
1
].
data
[
index
]
>>
adjust
[
1
];
*
img_ptr
++
=
image
->
comps
[
1
].
data
[
index
]
>>
adjust
[
1
];
*
img_ptr
++
=
image
->
comps
[
2
].
data
[
index
]
>>
adjust
[
2
];
*
img_ptr
++
=
image
->
comps
[
2
].
data
[
index
]
>>
adjust
[
2
];
if
(
has_alpha
)
if
(
has_alpha
)
*
img_ptr
++
=
image
->
comps
[
3
].
data
[
index
]
>>
adjust
[
3
];
*
img_ptr
++
=
image
->
comps
[
3
].
data
[
index
]
>>
adjust
[
3
];
}
}
}
}
...
@@ -215,9 +227,9 @@ static av_cold int libopenjpeg_decode_close(AVCodecContext *avctx)
...
@@ -215,9 +227,9 @@ static av_cold int libopenjpeg_decode_close(AVCodecContext *avctx)
{
{
LibOpenJPEGContext
*
ctx
=
avctx
->
priv_data
;
LibOpenJPEGContext
*
ctx
=
avctx
->
priv_data
;
if
(
ctx
->
image
.
data
[
0
])
if
(
ctx
->
image
.
data
[
0
])
ff_thread_release_buffer
(
avctx
,
&
ctx
->
image
);
ff_thread_release_buffer
(
avctx
,
&
ctx
->
image
);
return
0
;
return
0
;
}
}
#define OFFSET(x) offsetof(LibOpenJPEGContext, x)
#define OFFSET(x) offsetof(LibOpenJPEGContext, x)
...
...
libavcodec/libopenjpegenc.c
View file @
51a5ddfa
...
@@ -20,16 +20,16 @@
...
@@ -20,16 +20,16 @@
*/
*/
/**
/**
* @file
* @file
* JPEG 2000 encoder using libopenjpeg
* JPEG 2000 encoder using libopenjpeg
*/
*/
#define OPJ_STATIC
#define OPJ_STATIC
#include <openjpeg.h>
#include <openjpeg.h>
#include "libavutil/opt.h"
#include "libavutil/imgutils.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "avcodec.h"
#include "internal.h"
#include "internal.h"
...
@@ -76,13 +76,14 @@ static opj_image_t *libopenjpeg_create_image(AVCodecContext *avctx,
...
@@ -76,13 +76,14 @@ static opj_image_t *libopenjpeg_create_image(AVCodecContext *avctx,
int
sub_dy
[
4
];
int
sub_dy
[
4
];
int
numcomps
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
nb_components
;
int
numcomps
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
nb_components
;
sub_dx
[
0
]
=
sub_dx
[
3
]
=
1
;
sub_dx
[
0
]
=
sub_dy
[
0
]
=
sub_dy
[
3
]
=
1
;
sub_dx
[
3
]
=
1
;
sub_dx
[
1
]
=
sub_dx
[
2
]
=
sub_dy
[
0
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_w
;
sub_dy
[
3
]
=
1
;
sub_dy
[
1
]
=
sub_dy
[
2
]
=
sub_dx
[
1
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_h
;
sub_dx
[
2
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_w
;
sub_dy
[
1
]
=
sub_dy
[
2
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_h
;
switch
(
avctx
->
pix_fmt
)
{
switch
(
avctx
->
pix_fmt
)
{
case
PIX_FMT_GRAY8
:
case
PIX_FMT_GRAY8
:
...
@@ -251,12 +252,11 @@ static void libopenjpeg_copy_unpacked8(AVCodecContext *avctx,
...
@@ -251,12 +252,11 @@ static void libopenjpeg_copy_unpacked8(AVCodecContext *avctx,
for
(
y
=
0
;
y
<
height
;
++
y
)
{
for
(
y
=
0
;
y
<
height
;
++
y
)
{
image_index
=
y
*
width
;
image_index
=
y
*
width
;
frame_index
=
y
*
frame
->
linesize
[
compno
];
frame_index
=
y
*
frame
->
linesize
[
compno
];
for
(
x
=
0
;
x
<
width
;
++
x
)
{
for
(
x
=
0
;
x
<
width
;
++
x
)
image
->
comps
[
compno
].
data
[
image_index
++
]
=
image
->
comps
[
compno
].
data
[
image_index
++
]
=
frame
->
data
[
compno
][
frame_index
++
];
frame
->
data
[
compno
][
frame_index
++
];
}
}
}
}
}
}
}
static
void
libopenjpeg_copy_unpacked16
(
AVCodecContext
*
avctx
,
static
void
libopenjpeg_copy_unpacked16
(
AVCodecContext
*
avctx
,
...
@@ -277,12 +277,11 @@ static void libopenjpeg_copy_unpacked16(AVCodecContext *avctx,
...
@@ -277,12 +277,11 @@ static void libopenjpeg_copy_unpacked16(AVCodecContext *avctx,
for
(
y
=
0
;
y
<
height
;
++
y
)
{
for
(
y
=
0
;
y
<
height
;
++
y
)
{
image_index
=
y
*
width
;
image_index
=
y
*
width
;
frame_index
=
y
*
(
frame
->
linesize
[
compno
]
/
2
);
frame_index
=
y
*
(
frame
->
linesize
[
compno
]
/
2
);
for
(
x
=
0
;
x
<
width
;
++
x
)
{
for
(
x
=
0
;
x
<
width
;
++
x
)
image
->
comps
[
compno
].
data
[
image_index
++
]
=
image
->
comps
[
compno
].
data
[
image_index
++
]
=
frame_ptr
[
frame_index
++
];
frame_ptr
[
frame_index
++
];
}
}
}
}
}
}
}
static
int
libopenjpeg_encode_frame
(
AVCodecContext
*
avctx
,
AVPacket
*
pkt
,
static
int
libopenjpeg_encode_frame
(
AVCodecContext
*
avctx
,
AVPacket
*
pkt
,
...
@@ -373,7 +372,7 @@ static av_cold int libopenjpeg_encode_close(AVCodecContext *avctx)
...
@@ -373,7 +372,7 @@ static av_cold int libopenjpeg_encode_close(AVCodecContext *avctx)
opj_destroy_compress
(
ctx
->
compress
);
opj_destroy_compress
(
ctx
->
compress
);
opj_image_destroy
(
ctx
->
image
);
opj_image_destroy
(
ctx
->
image
);
av_freep
(
&
avctx
->
coded_frame
);
av_freep
(
&
avctx
->
coded_frame
);
return
0
;
return
0
;
}
}
#define OFFSET(x) offsetof(LibOpenJPEGContext, x)
#define OFFSET(x) offsetof(LibOpenJPEGContext, x)
...
@@ -421,7 +420,7 @@ AVCodec ff_libopenjpeg_encoder = {
...
@@ -421,7 +420,7 @@ AVCodec ff_libopenjpeg_encoder = {
.
encode2
=
libopenjpeg_encode_frame
,
.
encode2
=
libopenjpeg_encode_frame
,
.
close
=
libopenjpeg_encode_close
,
.
close
=
libopenjpeg_encode_close
,
.
capabilities
=
0
,
.
capabilities
=
0
,
.
pix_fmts
=
(
const
enum
PixelFormat
[]){
.
pix_fmts
=
(
const
enum
PixelFormat
[])
{
PIX_FMT_RGB24
,
PIX_FMT_RGBA
,
PIX_FMT_RGB48
,
PIX_FMT_RGB24
,
PIX_FMT_RGBA
,
PIX_FMT_RGB48
,
PIX_FMT_GRAY8
,
PIX_FMT_GRAY16
,
PIX_FMT_Y400A
,
PIX_FMT_GRAY8
,
PIX_FMT_GRAY16
,
PIX_FMT_Y400A
,
PIX_FMT_YUV420P
,
PIX_FMT_YUV422P
,
PIX_FMT_YUVA420P
,
PIX_FMT_YUV420P
,
PIX_FMT_YUV422P
,
PIX_FMT_YUVA420P
,
...
...
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