Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
50858a64
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,发现更多精彩内容 >>
提交
50858a64
编写于
5月 22, 2012
作者:
C
Carl Eugen Hoyos
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add Avid Meridien Uncompressed (AVUI) encoder.
上级
f452d6c3
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
124 addition
and
3 deletion
+124
-3
Changelog
Changelog
+1
-1
libavcodec/Makefile
libavcodec/Makefile
+1
-0
libavcodec/allcodecs.c
libavcodec/allcodecs.c
+1
-1
libavcodec/avuienc.c
libavcodec/avuienc.c
+107
-0
libavcodec/version.h
libavcodec/version.h
+1
-1
tests/codec-regression.sh
tests/codec-regression.sh
+5
-0
tests/ref/vsynth1/avui
tests/ref/vsynth1/avui
+4
-0
tests/ref/vsynth2/avui
tests/ref/vsynth2/avui
+4
-0
未找到文件。
Changelog
浏览文件 @
50858a64
...
...
@@ -28,7 +28,7 @@ version next:
- super2xsai filter ported from libmpcodecs
- add libavresample audio conversion library for compatibility
- MicroDVD decoder
- Avid Meridien (AVUI) decoder
- Avid Meridien (AVUI)
encoder and
decoder
- accept + prefix to -pix_fmt option to disable automatic conversions.
- audio filters support in libavfilter and avconv
- add fps filter
...
...
libavcodec/Makefile
浏览文件 @
50858a64
...
...
@@ -105,6 +105,7 @@ OBJS-$(CONFIG_AVRP_DECODER) += r210dec.o
OBJS-$(CONFIG_AVRP_ENCODER)
+=
r210enc.o
OBJS-$(CONFIG_AVS_DECODER)
+=
avs.o
OBJS-$(CONFIG_AVUI_DECODER)
+=
avuidec.o
OBJS-$(CONFIG_AVUI_ENCODER)
+=
avuienc.o
OBJS-$(CONFIG_AYUV_DECODER)
+=
v408dec.o
OBJS-$(CONFIG_AYUV_ENCODER)
+=
v408enc.o
OBJS-$(CONFIG_BETHSOFTVID_DECODER)
+=
bethsoftvideo.o
...
...
libavcodec/allcodecs.c
浏览文件 @
50858a64
...
...
@@ -81,7 +81,7 @@ void avcodec_register_all(void)
REGISTER_DECODER
(
AURA2
,
aura2
);
REGISTER_ENCDEC
(
AVRP
,
avrp
);
REGISTER_DECODER
(
AVS
,
avs
);
REGISTER_
DECODER
(
AVUI
,
avui
);
REGISTER_
ENCDEC
(
AVUI
,
avui
);
REGISTER_ENCDEC
(
AYUV
,
ayuv
);
REGISTER_DECODER
(
BETHSOFTVID
,
bethsoftvid
);
REGISTER_DECODER
(
BFI
,
bfi
);
...
...
libavcodec/avuienc.c
0 → 100644
浏览文件 @
50858a64
/*
* AVID Meridien encoder
*
* Copyright (c) 2012 Carl Eugen Hoyos
*
* 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
*/
#include "avcodec.h"
#include "internal.h"
static
av_cold
int
avui_encode_init
(
AVCodecContext
*
avctx
)
{
avctx
->
coded_frame
=
avcodec_alloc_frame
();
if
(
avctx
->
width
!=
720
||
avctx
->
height
!=
486
&&
avctx
->
height
!=
576
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Only 720x486 and 720x576 are supported.
\n
"
);
return
AVERROR
(
EINVAL
);
}
if
(
!
avctx
->
coded_frame
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Could not allocate frame.
\n
"
);
return
AVERROR
(
ENOMEM
);
}
return
0
;
}
static
int
avui_encode_frame
(
AVCodecContext
*
avctx
,
AVPacket
*
pkt
,
const
AVFrame
*
pic
,
int
*
got_packet
)
{
uint8_t
*
dst
,
*
src
=
pic
->
data
[
0
];
int
i
,
j
,
skip
,
ret
,
size
,
interlaced
=
pic
->
interlaced_frame
;
if
(
avctx
->
height
==
486
)
{
skip
=
10
;
}
else
{
skip
=
16
;
}
size
=
2
*
avctx
->
width
*
(
avctx
->
height
+
skip
)
+
8
*
interlaced
;
if
((
ret
=
ff_alloc_packet2
(
avctx
,
pkt
,
size
))
<
0
)
return
ret
;
dst
=
pkt
->
data
;
if
(
!
(
avctx
->
extradata
=
av_mallocz
(
24
+
FF_INPUT_BUFFER_PADDING_SIZE
)))
return
AVERROR
(
ENOMEM
);
avctx
->
extradata_size
=
24
;
memcpy
(
avctx
->
extradata
,
"
\0\0\0\x18
""APRGAPRG0001"
,
16
);
if
(
interlaced
)
{
avctx
->
extradata
[
19
]
=
2
;
}
else
{
avctx
->
extradata
[
19
]
=
1
;
dst
+=
avctx
->
width
*
skip
;
}
avctx
->
coded_frame
->
reference
=
0
;
avctx
->
coded_frame
->
key_frame
=
1
;
avctx
->
coded_frame
->
pict_type
=
AV_PICTURE_TYPE_I
;
for
(
i
=
0
;
i
<=
interlaced
;
i
++
)
{
if
(
interlaced
&&
avctx
->
height
==
486
)
{
src
=
pic
->
data
[
0
]
+
(
1
-
i
)
*
pic
->
linesize
[
0
];
}
else
{
src
=
pic
->
data
[
0
]
+
i
*
pic
->
linesize
[
0
];
}
dst
+=
avctx
->
width
*
skip
+
4
*
i
;
for
(
j
=
0
;
j
<
avctx
->
height
;
j
+=
interlaced
+
1
)
{
memcpy
(
dst
,
src
,
avctx
->
width
*
2
);
src
+=
(
interlaced
+
1
)
*
pic
->
linesize
[
0
];
dst
+=
avctx
->
width
*
2
;
}
}
pkt
->
flags
|=
AV_PKT_FLAG_KEY
;
*
got_packet
=
1
;
return
0
;
}
static
av_cold
int
avui_encode_close
(
AVCodecContext
*
avctx
)
{
av_freep
(
&
avctx
->
coded_frame
);
return
0
;
}
AVCodec
ff_avui_encoder
=
{
.
name
=
"avui"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
id
=
CODEC_ID_AVUI
,
.
init
=
avui_encode_init
,
.
encode2
=
avui_encode_frame
,
.
close
=
avui_encode_close
,
.
pix_fmts
=
(
const
enum
PixelFormat
[]){
PIX_FMT_UYVY422
,
PIX_FMT_NONE
},
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Avid Meridien Uncompressed"
),
};
libavcodec/version.h
浏览文件 @
50858a64
...
...
@@ -27,7 +27,7 @@
*/
#define LIBAVCODEC_VERSION_MAJOR 54
#define LIBAVCODEC_VERSION_MINOR 2
2
#define LIBAVCODEC_VERSION_MINOR 2
3
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
...
...
tests/codec-regression.sh
浏览文件 @
50858a64
...
...
@@ -350,6 +350,11 @@ do_video_encoding v408.avi "-an -c:v v408 -sws_flags neighbor+bitexact"
do_video_decoding
""
"-sws_flags neighbor+bitexact -pix_fmt yuv420p"
fi
if
[
-n
"
$do_avui
"
]
;
then
do_video_encoding avui.mov
"-s pal -an -c:v avui -sws_flags neighbor+bitexact"
do_video_decoding
""
"-s cif -sws_flags neighbor+bitexact -pix_fmt yuv420p"
fi
if
[
-n
"
$do_yuv
"
]
;
then
do_video_encoding yuv.avi
"-an -vcodec rawvideo -pix_fmt yuv420p"
do_video_decoding
""
"-pix_fmt yuv420p"
...
...
tests/ref/vsynth1/avui
0 → 100644
浏览文件 @
50858a64
6eaf08e0e02bccb135b934c5036eac25 *./tests/data/vsynth1/avui.mov
42624903 ./tests/data/vsynth1/avui.mov
c5ccac874dbf808e9088bc3107860042 *./tests/data/avui.vsynth1.out.yuv
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
tests/ref/vsynth2/avui
0 → 100644
浏览文件 @
50858a64
3f7c7bb5eba0006feb727badcad2b9bd *./tests/data/vsynth2/avui.mov
42624903 ./tests/data/vsynth2/avui.mov
dde5895817ad9d219f79a52d0bdfb001 *./tests/data/avui.vsynth2.out.yuv
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录