Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
8248515c
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
8248515c
编写于
6月 27, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
VideoView: set format from java side
上级
0c5a946b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
44 deletion
+48
-44
ijkmediaplayer/jni/ijksdl/android/android_nativewindow.c
ijkmediaplayer/jni/ijksdl/android/android_nativewindow.c
+47
-43
ijkmediawidget/src/tv/danmaku/ijk/media/widget/VideoView.java
...ediawidget/src/tv/danmaku/ijk/media/widget/VideoView.java
+1
-1
未找到文件。
ijkmediaplayer/jni/ijksdl/android/android_nativewindow.c
浏览文件 @
8248515c
...
...
@@ -29,8 +29,9 @@
#include "../ijksdl_inc_ffmpeg.h"
#include "../ijksdl_vout.h"
#include "../ijksdl_vout_internal.h"
#include "ijksdl_inc_internal_android.h"
static
void
sdl_copy_image_
yv12
(
ANativeWindow_Buffer
*
out_buffer
,
const
SDL_VoutOverlay
*
overlay
)
static
int
sdl_copy_image_yv12_to_hal
yv12
(
ANativeWindow_Buffer
*
out_buffer
,
const
SDL_VoutOverlay
*
overlay
)
{
// SDLTRACE("SDL_VoutAndroid: vout_copy_image_yv12(%p)", overlay);
assert
(
overlay
->
format
==
SDL_YV12_OVERLAY
);
...
...
@@ -72,60 +73,39 @@ static void sdl_copy_image_yv12(ANativeWindow_Buffer *out_buffer, const SDL_Vout
av_image_copy_plane
(
dst_pixels
,
dst_line_size
,
src_pixels
,
src_line_size
,
bytewidth
,
line_height
);
}
}
return
0
;
}
int
sdl_native_window_display
_l
(
ANativeWindow
*
native_window
,
SDL_VoutOverlay
*
overlay
)
static
int
sdl_native_window_display_on_yv12
_l
(
ANativeWindow
*
native_window
,
SDL_VoutOverlay
*
overlay
)
{
int
curr_w
,
curr_h
,
curr_format
;
int
retval
;
int
buf_w
=
overlay
->
w
;
int
buf_h
=
IJKALIGN
(
overlay
->
h
,
2
);
if
(
!
native_window
)
{
ALOGE
(
"sdl_native_window_display_l: NULL native_window"
);
ALOGE
(
"sdl_native_window_display_
on_yv12_
l: NULL native_window"
);
return
-
1
;
}
if
(
!
overlay
)
{
ALOGE
(
"sdl_native_window_display_l: NULL overlay"
);
ALOGE
(
"sdl_native_window_display_
on_yv12_
l: NULL overlay"
);
return
-
1
;
}
if
(
overlay
->
w
<=
0
||
overlay
->
h
<=
0
)
{
ALOGE
(
"sdl_native_window_display_l: invalid overlay dimensions(%d, %d)"
,
overlay
->
w
,
overlay
->
h
);
ALOGE
(
"sdl_native_window_display_
on_yv12_
l: invalid overlay dimensions(%d, %d)"
,
overlay
->
w
,
overlay
->
h
);
return
-
1
;
}
int
buf_w
=
overlay
->
w
;
int
buf_h
=
IJKALIGN
(
overlay
->
h
,
2
);
curr_format
=
ANativeWindow_getFormat
(
native_window
);
if
(
curr_format
!=
overlay
->
format
)
{
ALOGI
(
"ANativeWindow_setBuffersGeometry (%p)(w:%d, h:%d, fmt:'%.4s'0x%x) => (w:%d, h:%d, fmt:'%.4s'0x%x)"
,
native_window
,
curr_w
,
curr_h
,
(
char
*
)
&
curr_format
,
curr_format
,
buf_w
,
buf_h
,
(
char
*
)
&
overlay
->
format
,
overlay
->
format
);
retval
=
ANativeWindow_setBuffersGeometry
(
native_window
,
buf_w
,
buf_h
,
overlay
->
format
);
if
(
retval
)
{
ALOGE
(
"ANativeWindow_setBuffersGeometry failed %d"
,
retval
);
}
curr_format
=
ANativeWindow_getFormat
(
native_window
);
if
(
curr_format
!=
overlay
->
format
)
{
ALOGE
(
"unable to set native window (%p)(w:%d, h:%d, fmt:'%.4s'0x%x), expecting (w:%d, h:%d, fmt:'%.4s'0x%x)"
,
native_window
,
curr_w
,
curr_h
,
(
char
*
)
&
curr_format
,
curr_format
,
buf_w
,
buf_h
,
(
char
*
)
&
overlay
->
format
,
overlay
->
format
);
return
-
1
;
}
}
ANativeWindow_Buffer
out_buffer
;
retval
=
ANativeWindow_lock
(
native_window
,
&
out_buffer
,
NULL
);
if
(
retval
<
0
)
{
ALOGE
(
"sdl_native_window_display_l: ANativeWindow_lock: failed %d"
,
retval
);
ALOGE
(
"sdl_native_window_display_
on_yv12_
l: ANativeWindow_lock: failed %d"
,
retval
);
return
retval
;
}
if
(
out_buffer
.
width
!=
buf_w
||
out_buffer
.
height
!=
buf_h
)
{
if
(
out_buffer
.
width
!=
buf_w
||
out_buffer
.
height
!=
buf_h
||
out_buffer
.
format
!=
HAL_PIXEL_FORMAT_YV12
)
{
ALOGE
(
"unexpected native window buffer (%p)(w:%d, h:%d, fmt:'%.4s'0x%x), expecting (w:%d, h:%d, fmt:'%.4s'0x%x)"
,
native_window
,
out_buffer
.
width
,
out_buffer
.
height
,
(
char
*
)
&
out_buffer
.
format
,
out_buffer
.
format
,
...
...
@@ -135,21 +115,45 @@ int sdl_native_window_display_l(ANativeWindow *native_window, SDL_VoutOverlay *o
return
-
1
;
}
int
copy_ret
=
0
;
switch
(
out_buffer
.
format
)
{
case
SDL_YV12_OVERLAY
:
sdl_copy_image_yv12
(
&
out_buffer
,
overlay
);
break
;
default:
ALOGE
(
"sdl_native_window_display_l: unexpected buffer format: %d"
,
out_buffer
.
format
);
copy_ret
=
-
1
;
break
;
}
int
copy_ret
=
sdl_copy_image_yv12_to_halyv12
(
&
out_buffer
,
overlay
);
retval
=
ANativeWindow_unlockAndPost
(
native_window
);
if
(
retval
<
0
)
{
ALOGE
(
"sdl_native_window_display_l: ANativeWindow_unlockAndPost: failed %d"
,
retval
);
ALOGE
(
"sdl_native_window_display_
on_yv12_
l: ANativeWindow_unlockAndPost: failed %d"
,
retval
);
return
retval
;
}
return
copy_ret
;
}
int
sdl_native_window_display_l
(
ANativeWindow
*
native_window
,
SDL_VoutOverlay
*
overlay
)
{
int
retval
;
if
(
!
native_window
)
{
ALOGE
(
"sdl_native_window_display_l: NULL native_window"
);
return
-
1
;
}
if
(
!
overlay
)
{
ALOGE
(
"sdl_native_window_display_l: NULL overlay"
);
return
-
1
;
}
if
(
overlay
->
w
<=
0
||
overlay
->
h
<=
0
)
{
ALOGE
(
"sdl_native_window_display_l: invalid overlay dimensions(%d, %d)"
,
overlay
->
w
,
overlay
->
h
);
return
-
1
;
}
int
curr_format
=
ANativeWindow_getFormat
(
native_window
);
switch
(
curr_format
)
{
case
HAL_PIXEL_FORMAT_YV12
:
retval
=
sdl_native_window_display_on_yv12_l
(
native_window
,
overlay
);
break
;
default:
ALOGE
(
"sdl_native_window_display_l: unexpected buffer format: %d"
,
curr_format
);
retval
=
-
1
;
break
;
}
return
retval
;
}
ijkmediawidget/src/tv/danmaku/ijk/media/widget/VideoView.java
浏览文件 @
8248515c
...
...
@@ -174,7 +174,7 @@ public class VideoView extends SurfaceView implements
}
setLayoutParams
(
lp
);
getHolder
().
setFixedSize
(
mSurfaceWidth
,
mSurfaceHeight
);
//
getHolder().setFormat(ImageFormat.YV12);
getHolder
().
setFormat
(
ImageFormat
.
YV12
);
DebugLog
.
dfmt
(
TAG
,
"VIDEO: %dx%dx%f[SAR:%d:%d], Surface: %dx%d, LP: %dx%d, Window: %dx%dx%f"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录