Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
85b442e2
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
85b442e2
编写于
10月 08, 2020
作者:
P
Peter Ross
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avcodec/msp2dec: Microsoft Paint (MSP) version 2 decoder
Signed-off-by:
N
Peter Ross
<
pross@xvid.org
>
上级
b51b9bbd
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
114 addition
and
1 deletion
+114
-1
Changelog
Changelog
+1
-0
libavcodec/Makefile
libavcodec/Makefile
+1
-0
libavcodec/allcodecs.c
libavcodec/allcodecs.c
+1
-0
libavcodec/codec_desc.c
libavcodec/codec_desc.c
+7
-0
libavcodec/codec_id.h
libavcodec/codec_id.h
+1
-0
libavcodec/msp2dec.c
libavcodec/msp2dec.c
+102
-0
libavcodec/version.h
libavcodec/version.h
+1
-1
未找到文件。
Changelog
浏览文件 @
85b442e2
...
...
@@ -49,6 +49,7 @@ version <next>:
- SpeedHQ encoder
- asupercut filter
- asubcut filter
- Microsoft Paint (MSP) version 2 decoder
version 4.3:
...
...
libavcodec/Makefile
浏览文件 @
85b442e2
...
...
@@ -508,6 +508,7 @@ OBJS-$(CONFIG_MSMPEG4V2_DECODER) += msmpeg4dec.o msmpeg4.o msmpeg4data.o
OBJS-$(CONFIG_MSMPEG4V2_ENCODER)
+=
msmpeg4enc.o msmpeg4.o msmpeg4data.o
OBJS-$(CONFIG_MSMPEG4V3_DECODER)
+=
msmpeg4dec.o msmpeg4.o msmpeg4data.o
OBJS-$(CONFIG_MSMPEG4V3_ENCODER)
+=
msmpeg4enc.o msmpeg4.o msmpeg4data.o
OBJS-$(CONFIG_MSP2_DECODER)
+=
msp2dec.o
OBJS-$(CONFIG_MSRLE_DECODER)
+=
msrle.o msrledec.o
OBJS-$(CONFIG_MSS1_DECODER)
+=
mss1.o mss12.o
OBJS-$(CONFIG_MSS2_DECODER)
+=
mss2.o mss12.o mss2dsp.o wmv2data.o
...
...
libavcodec/allcodecs.c
浏览文件 @
85b442e2
...
...
@@ -215,6 +215,7 @@ extern AVCodec ff_msmpeg4v2_decoder;
extern
AVCodec
ff_msmpeg4v3_encoder
;
extern
AVCodec
ff_msmpeg4v3_decoder
;
extern
AVCodec
ff_msmpeg4_crystalhd_decoder
;
extern
AVCodec
ff_msp2_decoder
;
extern
AVCodec
ff_msrle_decoder
;
extern
AVCodec
ff_mss1_decoder
;
extern
AVCodec
ff_mss2_decoder
;
...
...
libavcodec/codec_desc.c
浏览文件 @
85b442e2
...
...
@@ -1419,6 +1419,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"AVS3-P2/IEEE1857.10"
),
.
props
=
AV_CODEC_PROP_LOSSY
,
},
{
.
id
=
AV_CODEC_ID_MSP2
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
name
=
"msp2"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Microsoft Paint (MSP) version 2"
),
.
props
=
AV_CODEC_PROP_INTRA_ONLY
|
AV_CODEC_PROP_LOSSLESS
,
},
{
.
id
=
AV_CODEC_ID_Y41P
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
...
libavcodec/codec_id.h
浏览文件 @
85b442e2
...
...
@@ -243,6 +243,7 @@ enum AVCodecID {
AV_CODEC_ID_AVS2
,
AV_CODEC_ID_PGX
,
AV_CODEC_ID_AVS3
,
AV_CODEC_ID_MSP2
,
AV_CODEC_ID_Y41P
=
0x8000
,
AV_CODEC_ID_AVRP
,
...
...
libavcodec/msp2dec.c
0 → 100644
浏览文件 @
85b442e2
/*
* Microsoft Paint (MSP) version 2 decoder
* Copyright (c) 2020 Peter Ross (pross@xvid.org)
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* Microsoft Paint (MSP) version 2 decoder
*/
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
static
int
msp2_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame
,
AVPacket
*
avpkt
)
{
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
AVFrame
*
p
=
data
;
int
ret
;
unsigned
int
x
,
y
,
width
=
(
avctx
->
width
+
7
)
/
8
;
GetByteContext
idx
,
gb
;
if
(
buf_size
<=
2
*
avctx
->
height
)
return
AVERROR_INVALIDDATA
;
avctx
->
pix_fmt
=
AV_PIX_FMT_MONOBLACK
;
if
((
ret
=
ff_get_buffer
(
avctx
,
p
,
0
))
<
0
)
return
ret
;
p
->
pict_type
=
AV_PICTURE_TYPE_I
;
p
->
key_frame
=
1
;
bytestream2_init
(
&
idx
,
buf
,
2
*
avctx
->
height
);
buf
+=
2
*
avctx
->
height
;
buf_size
-=
2
*
avctx
->
height
;
for
(
y
=
0
;
y
<
avctx
->
height
;
y
++
)
{
unsigned
int
pkt_size
=
bytestream2_get_le16
(
&
idx
);
if
(
!
pkt_size
)
{
memset
(
p
->
data
[
0
]
+
y
*
p
->
linesize
[
0
],
0xFF
,
width
);
continue
;
}
if
(
pkt_size
>
buf_size
)
{
av_log
(
avctx
,
AV_LOG_WARNING
,
"image probably corrupt
\n
"
);
pkt_size
=
buf_size
;
}
bytestream2_init
(
&
gb
,
buf
,
pkt_size
);
x
=
0
;
while
(
bytestream2_get_bytes_left
(
&
gb
)
&&
x
<
width
)
{
int
size
=
bytestream2_get_byte
(
&
gb
);
if
(
size
)
{
memcpy
(
p
->
data
[
0
]
+
y
*
p
->
linesize
[
0
]
+
x
,
gb
.
buffer
,
FFMIN
(
size
,
width
-
x
));
bytestream2_skip
(
&
gb
,
size
);
}
else
{
int
value
;
size
=
bytestream2_get_byte
(
&
gb
);
if
(
!
size
)
avpriv_request_sample
(
avctx
,
"escape value"
);
value
=
bytestream2_get_byte
(
&
gb
);
memset
(
p
->
data
[
0
]
+
y
*
p
->
linesize
[
0
]
+
x
,
value
,
FFMIN
(
size
,
width
-
x
));
}
x
+=
size
;
}
buf
+=
pkt_size
;
buf_size
-=
pkt_size
;
}
*
got_frame
=
1
;
return
buf_size
;
}
AVCodec
ff_msp2_decoder
=
{
.
name
=
"msp2"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Microsoft Paint (MSP) version 2"
),
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
id
=
AV_CODEC_ID_MSP2
,
.
decode
=
msp2_decode_frame
,
.
capabilities
=
AV_CODEC_CAP_DR1
,
};
libavcodec/version.h
浏览文件 @
85b442e2
...
...
@@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 11
4
#define LIBAVCODEC_VERSION_MINOR 11
5
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录