Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
85bdf189
Commit
85bdf189
authored
Jan 31, 2021
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec: add PFM image encoder
parent
090f31f8
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
49 additions
and
3 deletions
+49
-3
Changelog
Changelog
+1
-0
Makefile
libavcodec/Makefile
+1
-0
allcodecs.c
libavcodec/allcodecs.c
+1
-0
pnmenc.c
libavcodec/pnmenc.c
+44
-1
version.h
libavcodec/version.h
+1
-1
img2enc.c
libavformat/img2enc.c
+1
-1
No files found.
Changelog
View file @
85bdf189
...
...
@@ -62,6 +62,7 @@ version <next>:
- kirsch filter
- colortemperature filter
- colorcontrast filter
- PFM encoder
version 4.3:
...
...
libavcodec/Makefile
View file @
85bdf189
...
...
@@ -545,6 +545,7 @@ OBJS-$(CONFIG_PBM_ENCODER) += pnmenc.o
OBJS-$(CONFIG_PCX_DECODER)
+=
pcx.o
OBJS-$(CONFIG_PCX_ENCODER)
+=
pcxenc.o
OBJS-$(CONFIG_PFM_DECODER)
+=
pnmdec.o
pnm.o
OBJS-$(CONFIG_PFM_ENCODER)
+=
pnmenc.o
OBJS-$(CONFIG_PGM_DECODER)
+=
pnmdec.o
pnm.o
OBJS-$(CONFIG_PGM_ENCODER)
+=
pnmenc.o
OBJS-$(CONFIG_PGMYUV_DECODER)
+=
pnmdec.o
pnm.o
...
...
libavcodec/allcodecs.c
View file @
85bdf189
...
...
@@ -239,6 +239,7 @@ extern AVCodec ff_pbm_encoder;
extern
AVCodec
ff_pbm_decoder
;
extern
AVCodec
ff_pcx_encoder
;
extern
AVCodec
ff_pcx_decoder
;
extern
AVCodec
ff_pfm_encoder
;
extern
AVCodec
ff_pfm_decoder
;
extern
AVCodec
ff_pgm_encoder
;
extern
AVCodec
ff_pgm_decoder
;
...
...
libavcodec/pnmenc.c
View file @
85bdf189
...
...
@@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/intreadwrite.h"
#include "libavutil/imgutils.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h"
...
...
@@ -77,19 +78,46 @@ static int pnm_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
n
=
avctx
->
width
*
2
;
h1
=
(
h
*
3
)
/
2
;
break
;
case
AV_PIX_FMT_GBRPF32
:
c
=
'F'
;
n
=
avctx
->
width
*
4
;
break
;
default:
return
-
1
;
}
snprintf
(
bytestream
,
bytestream_end
-
bytestream
,
"P%c
\n
%d %d
\n
"
,
c
,
avctx
->
width
,
h1
);
bytestream
+=
strlen
(
bytestream
);
if
(
avctx
->
pix_fmt
!=
AV_PIX_FMT_MONOWHITE
)
{
if
(
avctx
->
pix_fmt
==
AV_PIX_FMT_GBRPF32
)
snprintf
(
bytestream
,
bytestream_end
-
bytestream
,
"%f
\n
"
,
avctx
->
pix_fmt
==
AV_PIX_FMT_GBRPF32BE
?
1
.
f
:
-
1
.
f
);
bytestream
+=
strlen
(
bytestream
);
if
(
avctx
->
pix_fmt
!=
AV_PIX_FMT_MONOWHITE
&&
avctx
->
pix_fmt
!=
AV_PIX_FMT_GBRPF32
)
{
int
maxdepth
=
(
1
<<
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
)
->
comp
[
0
].
depth
)
-
1
;
snprintf
(
bytestream
,
bytestream_end
-
bytestream
,
"%d
\n
"
,
maxdepth
);
bytestream
+=
strlen
(
bytestream
);
}
if
(
avctx
->
pix_fmt
==
AV_PIX_FMT_GBRPF32
)
{
float
*
r
=
(
float
*
)
p
->
data
[
2
];
float
*
g
=
(
float
*
)
p
->
data
[
0
];
float
*
b
=
(
float
*
)
p
->
data
[
1
];
for
(
int
i
=
0
;
i
<
avctx
->
height
;
i
++
)
{
for
(
int
j
=
0
;
j
<
avctx
->
width
;
j
++
)
{
AV_WN32
(
bytestream
+
0
,
av_float2int
(
r
[
j
]));
AV_WN32
(
bytestream
+
4
,
av_float2int
(
g
[
j
]));
AV_WN32
(
bytestream
+
8
,
av_float2int
(
b
[
j
]));
bytestream
+=
12
;
}
r
+=
p
->
linesize
[
2
]
/
4
;
g
+=
p
->
linesize
[
0
]
/
4
;
b
+=
p
->
linesize
[
1
]
/
4
;
}
}
else
{
ptr
=
p
->
data
[
0
];
linesize
=
p
->
linesize
[
0
];
for
(
i
=
0
;
i
<
h
;
i
++
)
{
...
...
@@ -97,6 +125,7 @@ static int pnm_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
bytestream
+=
n
;
ptr
+=
linesize
;
}
}
if
(
avctx
->
pix_fmt
==
AV_PIX_FMT_YUV420P
||
avctx
->
pix_fmt
==
AV_PIX_FMT_YUV420P16BE
)
{
h
>>=
1
;
...
...
@@ -189,3 +218,17 @@ AVCodec ff_pbm_encoder = {
.
caps_internal
=
FF_CODEC_CAP_INIT_THREADSAFE
,
};
#endif
#if CONFIG_PFM_ENCODER
AVCodec
ff_pfm_encoder
=
{
.
name
=
"pfm"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"PFM (Portable FloatMap) image"
),
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
id
=
AV_CODEC_ID_PFM
,
.
init
=
pnm_encode_init
,
.
encode2
=
pnm_encode_frame
,
.
pix_fmts
=
(
const
enum
AVPixelFormat
[]){
AV_PIX_FMT_GBRPF32
,
AV_PIX_FMT_NONE
},
.
caps_internal
=
FF_CODEC_CAP_INIT_THREADSAFE
,
};
#endif
libavcodec/version.h
View file @
85bdf189
...
...
@@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 1
19
#define LIBAVCODEC_VERSION_MINOR 1
20
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
...
...
libavformat/img2enc.c
View file @
85bdf189
...
...
@@ -260,7 +260,7 @@ static const AVClass img2mux_class = {
AVOutputFormat
ff_image2_muxer
=
{
.
name
=
"image2"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"image2 sequence"
),
.
extensions
=
"bmp,dpx,jls,jpeg,jpg,ljpg,pam,pbm,pcx,pgm,pgmyuv,png,"
.
extensions
=
"bmp,dpx,jls,jpeg,jpg,ljpg,pam,pbm,pcx,p
fm,p
gm,pgmyuv,png,"
"ppm,sgi,tga,tif,tiff,jp2,j2c,j2k,xwd,sun,ras,rs,im1,im8,im24,"
"sunras,xbm,xface,pix,y"
,
.
priv_data_size
=
sizeof
(
VideoMuxData
),
...
...
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