Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
726c87c4
I
ijkplayer
项目概览
NotesChapter
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
726c87c4
编写于
6月 26, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijksdl: support YV12 output
上级
40aef0d7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
20 deletion
+31
-20
ijkmediaplayer/jni/ijksdl/android/ijksdl_vout_android_nativewindow.c
...yer/jni/ijksdl/android/ijksdl_vout_android_nativewindow.c
+24
-17
ijkmediaplayer/jni/ijksdl/ijksdl_vout.h
ijkmediaplayer/jni/ijksdl/ijksdl_vout.h
+1
-1
ijkmediaplayer/jni/ijksdl/ijksdl_vout_overlay_ffmpeg.c
ijkmediaplayer/jni/ijksdl/ijksdl_vout_overlay_ffmpeg.c
+6
-2
未找到文件。
ijkmediaplayer/jni/ijksdl/android/ijksdl_vout_android_nativewindow.c
浏览文件 @
726c87c4
...
...
@@ -67,7 +67,7 @@ static SDL_VoutSurface *vout_set_video_mode_l(SDL_Vout *vout, int w, int h, int
assert(bpp == 0);
if (!native_window)
return NULL;
return NULL;
curr_w = ANativeWindow_getWidth(native_window);
curr_h = ANativeWindow_getHeight(native_window);
...
...
@@ -110,43 +110,51 @@ static SDL_VoutSurface *vout_set_video_mode(SDL_Vout *vout, int w, int h, int bp
static
void
vout_copy_image_yv12
(
ANativeWindow_Buffer
*
out_buffer
,
const
SDL_VoutOverlay
*
overlay
)
{
SDLTRACE
(
"SDL_VoutAndroid: vout_copy_image_yv12(%p)"
,
overlay
);
//
SDLTRACE("SDL_VoutAndroid: vout_copy_image_yv12(%p)", overlay);
assert
(
overlay
->
format
==
SDL_YV12_OVERLAY
);
assert
(
overlay
->
planes
==
3
);
int
min_height
=
IJKMIN
(
out_buffer
->
height
,
overlay
->
h
);
int
dst_y_pitch
=
out_buffer
->
stride
;
int
dst_c_pitch
=
IJKALIGN
(
out_buffer
->
stride
/
2
,
16
);
int
dst_y_size
=
dst_y_pitch
*
out_buffer
->
height
;
int
dst_c_size
=
dst_c_pitch
*
out_buffer
->
height
/
2
;
int
dst_y_stride
=
out_buffer
->
stride
;
int
dst_c_stride
=
IJKALIGN
(
out_buffer
->
stride
/
2
,
16
);
int
dst_y_size
=
dst_y_stride
*
out_buffer
->
height
;
int
dst_c_size
=
dst_c_stride
*
out_buffer
->
height
/
2
;
// ALOGE("stride:%d/%d, size:%d/%d", dst_y_stride, dst_c_stride, dst_y_size, dst_c_size);
uint8_t
*
dst_pixels_array
[]
=
{
out_buffer
->
bits
,
out_buffer
->
bits
+
dst_y_size
,
out_buffer
->
bits
+
dst_y_size
+
dst_c_size
out_buffer
->
bits
+
dst_y_size
+
dst_c_size
,
};
int
dst_plane_size_array
[]
=
{
dst_y_size
,
dst_c_size
,
dst_c_size
};
int
dst_pitches
[]
=
{
dst_y_pitch
,
dst_c_pitch
,
dst_c_pitch
};
int
dst_line_height
[]
=
{
min_height
,
min_height
/
2
,
min_height
/
2
};
int
dst_line_size_array
[]
=
{
dst_y_stride
,
dst_c_stride
,
dst_c_stride
};
for
(
int
i
=
0
;
i
<
3
;
++
i
)
{
int
dst_pitch
=
dst_pitches
[
i
];
int
src_pitch
=
overlay
->
pitches
[
i
];
int
dst_line_size
=
dst_line_size_array
[
i
];
int
src_line_size
=
overlay
->
pitches
[
i
];
int
line_height
=
dst_line_height
[
i
];
uint8_t
*
dst_pixels
=
dst_pixels_array
[
i
];
const
uint8_t
*
src_pixels
=
overlay
->
pixels
[
i
];
int
dst_plane_size
=
dst_plane_size_array
[
i
];
if
(
dst_pitch
==
src_pitch
)
{
if
(
dst_line_size
==
src_line_size
)
{
// ALOGE("sdl_image_copy_plane %p %p %d", dst_pixels, src_pixels, dst_plane_size);
memcpy
(
dst_pixels
,
src_pixels
,
dst_plane_size
);
}
else
{
int
bytewidth
=
IJKMIN
(
dst_pitch
,
src_pitch
);
av_image_copy_plane
(
dst_pixels
,
dst_pitch
,
src_pixels
,
src_pitch
,
bytewidth
,
min_height
);
// TODO: padding
int
bytewidth
=
IJKMIN
(
dst_line_size
,
src_line_size
);
// ALOGE("av_image_copy_plane %p %d %p %d %d %d", dst_pixels, dst_line_size, src_pixels, src_line_size, bytewidth, min_height);
av_image_copy_plane
(
dst_pixels
,
dst_line_size
,
src_pixels
,
src_line_size
,
bytewidth
,
line_height
);
}
}
}
static
int
voud_display_overlay_l
(
SDL_Vout
*
vout
,
SDL_VoutOverlay
*
overlay
)
{
SDLTRACE
(
"SDL_VoutAndroid: display(%p)"
,
overlay
);
SDL_Vout_Opaque
*
opaque
=
vout
->
opaque
;
ANativeWindow
*
native_window
=
opaque
->
native_window
;
int
curr_w
,
curr_h
,
curr_format
;
...
...
@@ -167,8 +175,8 @@ static int voud_display_overlay_l(SDL_Vout *vout, SDL_VoutOverlay *overlay)
return
-
1
;
}
int
buf_w
=
(
overlay
->
w
+
1
)
&
~
1
;
int
buf_h
=
(
overlay
->
h
+
1
)
&
~
1
;
int
buf_w
=
overlay
->
w
;
int
buf_h
=
IJKALIGN
(
overlay
->
h
,
2
)
;
curr_w
=
ANativeWindow_getWidth
(
native_window
);
curr_h
=
ANativeWindow_getHeight
(
native_window
);
...
...
@@ -219,7 +227,6 @@ static int voud_display_overlay_l(SDL_Vout *vout, SDL_VoutOverlay *overlay)
int
copy_ret
=
0
;
switch
(
out_buffer
.
format
)
{
case
SDL_YV12_OVERLAY
:
ALOGE
(
"voud_display_overlay_l: vout_copy_image_yv12"
);
vout_copy_image_yv12
(
&
out_buffer
,
overlay
);
break
;
default:
...
...
ijkmediaplayer/jni/ijksdl/ijksdl_vout.h
浏览文件 @
726c87c4
...
...
@@ -35,7 +35,7 @@ typedef struct SDL_VoutOverlay {
int
h
;
/**< Read-only */
Uint32
format
;
/**< Read-only */
int
planes
;
/**< Read-only */
Uint16
*
pitches
;
/**< Read-only */
Uint16
*
pitches
;
/**<
in bytes,
Read-only */
Uint8
**
pixels
;
/**< Read-write */
void
*
opaque
;
...
...
ijkmediaplayer/jni/ijksdl/ijksdl_vout_overlay_ffmpeg.c
浏览文件 @
726c87c4
...
...
@@ -140,10 +140,14 @@ SDL_VoutOverlay *SDL_VoutCreateFFmpegYUVOverlay(int width, int height, Uint32 fo
overlay
->
pitches
[
2
]
=
pic
->
linesize
[
1
];
overlay
->
pitches
[
1
]
=
pic
->
linesize
[
2
];
}
SDLTRACE
(
"SDL_VoutCreateFFmpegYUVOverlay(...): overlay(w=%d, h=%d, fmt=0x%x, planes=%d)"
,
SDLTRACE
(
"SDL_VoutCreateFFmpegYUVOverlay(...): overlay(w=%d, h=%d, fmt=0x%x, planes=%d
, pitches=%d,%d,%d
)"
,
overlay
->
w
,
overlay
->
h
,
overlay
->
format
);
overlay
->
format
,
overlay
->
planes
,
overlay
->
pitches
[
0
],
overlay
->
pitches
[
1
],
overlay
->
pitches
[
2
]);
break
;
default:
ALOGE
(
"SDL_VoutCreateFFmpegYUVOverlay(...): unknown format"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录