Advertisement
Guest User

Untitled

a guest
Jun 19th, 2013
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 51.95 KB | None | 0 0
  1. diff -b -u -r -N '--exclude=.git' linux-armhf/adapter/cdxalloc/cdxalloc.h linux-armel_new/adapter/cdxalloc/cdxalloc.h
  2. --- linux-armhf/adapter/cdxalloc/cdxalloc.h 1970-01-01 01:00:00.000000000 +0100
  3. +++ linux-armel_new/adapter/cdxalloc/cdxalloc.h 2013-06-19 12:18:14.000000000 +0200
  4. @@ -0,0 +1,21 @@
  5. +
  6. +#ifndef CDX_ALLOC_H
  7. +#define CDX_ALLOC_H
  8. +
  9. +#ifdef __cplusplus
  10. +extern "C" {
  11. +#endif
  12. +
  13. +   int          cdxalloc_open(void);
  14. +   int          cdxalloc_close(void);
  15. +   void*        cdxalloc_alloc(int size);
  16. +   void         cdxalloc_free(void* address);
  17. +   unsigned int cdxalloc_vir2phy(void* address);
  18. +
  19. +
  20. +#ifdef __cplusplus
  21. +}
  22. +#endif
  23. +
  24. +#endif
  25. +
  26. diff -b -u -r -N '--exclude=.git' linux-armhf/adapter/libve_adapter.c linux-armel_new/adapter/libve_adapter.c
  27. --- linux-armhf/adapter/libve_adapter.c 2013-06-19 12:18:15.000000000 +0200
  28. +++ linux-armel_new/adapter/libve_adapter.c 2013-06-19 12:18:14.000000000 +0200
  29. @@ -15,47 +15,16 @@
  30.  #include "os_adapter.h"
  31.  #include "vdecoder_config.h"
  32.  #include <cedardev_api.h>      //* you can find this header file in cedarX/CedarX/include/include_platform/CHIP_F20
  33. -#include "avheap.h"
  34. -
  35. -//****************************************************************************//
  36. -//************************ Instance of FBM Interface *************************//
  37. -//****************************************************************************//
  38. -IFBM_t gIFBM =
  39. -{
  40. -    fbm_release,
  41. -    fbm_decoder_request_frame,
  42. -    fbm_decoder_return_frame,
  43. -    fbm_decoder_share_frame,
  44. -    fbm_init_ex
  45. -};
  46. +#include "cdxalloc.h"
  47.  
  48.  #define WALL_CLOCK_FREQ (50*1000)
  49.  static signed long long wall_clock = 0;
  50.  unsigned int avs_cnt_last = 0;
  51. -//****************************************************************************//
  52. -//************************ Instance of VBV Interface *************************//
  53. -//****************************************************************************//
  54. -
  55. -static void flush_stream_frame(vstream_data_t* stream, Handle vbv)
  56. -{
  57. -    vbv_flush_stream_frame(stream, vbv);
  58. -    libcedarv_free_vbs_buffer_sem(vbv_get_parent(vbv));
  59. -}
  60. -
  61. -IVBV_t gIVBV =
  62. -{
  63. -    vbv_request_stream_frame,
  64. -    vbv_return_stream_frame,
  65. -    flush_stream_frame,
  66. -    vbv_get_base_addr,
  67. -    vbv_get_buffer_size
  68. -};
  69. -
  70.  
  71.  //****************************************************************************//
  72.  //************************ Instance of OS Interface **************************//
  73.  //****************************************************************************//
  74. -IOS_t gIOS =
  75. +IOS_t IOS =
  76.  {
  77.      //* Heap operation.
  78.      mem_alloc,
  79. @@ -126,7 +95,7 @@
  80.     pthread_mutex_init(&cedarv_osal_mutex, NULL);
  81.  
  82.     //* open CedarX memory manage library.
  83. -   av_heap_init(cedarv_osal_ctx->fd);
  84. +   cdxalloc_open();
  85.  
  86.     cedarv_request_ve_core();
  87.  
  88. @@ -156,7 +125,7 @@
  89.     cedarv_release_ve_core();
  90.  
  91.     //* close CedarX memory manage library.
  92. -   av_heap_release();
  93. +   cdxalloc_close();
  94.  
  95.     munmap((void *)cedarv_osal_ctx->env_info.address_macc, 2048);
  96.  
  97. @@ -178,7 +147,7 @@
  98.  static u32       ve_get_reg_base_addr(void);
  99.  static memtype_e ve_get_memtype(void);
  100.  
  101. -IVEControl_t gIVE =
  102. +IVEControl_t IVE =
  103.  {
  104.      ve_reset_hardware,
  105.      ve_enable_clock,
  106. diff -b -u -r -N '--exclude=.git' linux-armhf/adapter/os_adapter.c linux-armel_new/adapter/os_adapter.c
  107. --- linux-armhf/adapter/os_adapter.c    2013-06-19 12:18:15.000000000 +0200
  108. +++ linux-armel_new/adapter/os_adapter.c    2013-06-19 12:18:14.000000000 +0200
  109. @@ -10,7 +10,7 @@
  110.  #include "vdecoder_config.h"
  111.  
  112.  //#include <cedarv_osal_linux.h>
  113. -#include <avheap.h>
  114. +#include <cdxalloc.h>
  115.  #include <cedardev_api.h>
  116.  
  117.  #include <stdarg.h>
  118. @@ -34,13 +34,13 @@
  119.  
  120.  void* mem_palloc(u32 size, u32 align)
  121.  {
  122. -   return av_heap_alloc((u32)size);
  123. +   return cdxalloc_alloc((u32)size);
  124.  }
  125.  
  126.  
  127.  void  mem_pfree(void* p)
  128.  {
  129. -   av_heap_free(p);
  130. +   cdxalloc_free(p);
  131.  }
  132.  
  133.  
  134. @@ -68,7 +68,7 @@
  135.  
  136.  u32 mem_get_phy_addr(u32 virtual_addr)
  137.  {
  138. -   return av_heap_physic_addr((void*)virtual_addr);
  139. +   return cdxalloc_vir2phy((void*)virtual_addr);
  140.  }
  141.  
  142.  //*******************************************************//
  143. @@ -116,13 +116,14 @@
  144.  //*******************************************************//
  145.  s32 sys_print(u8* func, u32 line, ...)
  146.  {
  147. -    va_list args;
  148. -
  149. -    va_start(args, line);
  150. -
  151. -   AwVLog((char*)func, line, args);
  152. -
  153. -    va_end(args);
  154. +   //use other print function
  155. +//    va_list args;
  156. +//
  157. +//    va_start(args, line);
  158. +//
  159. +// AwVLog((char*)func, line, args);
  160. +//
  161. +//    va_end(args);
  162.  
  163.      return 0;
  164.  }
  165. diff -b -u -r -N '--exclude=.git' linux-armhf/commom_type.h linux-armel_new/commom_type.h
  166. --- linux-armhf/commom_type.h   1970-01-01 01:00:00.000000000 +0100
  167. +++ linux-armel_new/commom_type.h   2013-06-19 12:18:14.000000000 +0200
  168. @@ -0,0 +1,70 @@
  169. +
  170. +#ifndef COMMOM_TYPE_H
  171. +#define COMMOM_TYPE_H
  172. +
  173. +#ifdef __cplusplus
  174. +extern "C" {
  175. +#endif
  176. +
  177. +#include "libve_typedef.h"
  178. +//* define function prototype for frame buffer manage operation.
  179. +typedef Handle     (*FBM_INIT_EX)(u32 max_frame_num, u32 min_frame_num, u32 size_y[], u32 size_u[], u32 size_v[],
  180. +                                   u32 size_alpha[], _3d_mode_e out_3d_mode, pixel_format_e format, u8 ,  void* parent);
  181. +typedef Handle     (*FBM_INIT_EX_YV12)(u32 max_frame_num, u32 min_frame_num, u32 size_y[], u32 size_u[], u32 size_v[],
  182. +                                   u32 size_alpha[], _3d_mode_e out_3d_mode, pixel_format_e format, u8 ,  void* parent);
  183. +typedef Handle     (*FBM_INIT_YV32)(u32 max_frame_num, u32 min_frame_num, u32 size_y[], u32 size_u[], u32 size_v[],
  184. +                                   u32 size_alpha[], _3d_mode_e out_3d_mode, pixel_format_e format, u8 ,  void* parent);
  185. +typedef void        (*FBM_RELEASE)(Handle h, void* parent);
  186. +typedef vpicture_t* (*FBM_REQUEST_FRAME)(Handle h);
  187. +typedef void        (*FBM_RETURN_FRAME)(vpicture_t* frame, u8 valid, Handle h);
  188. +typedef void        (*FBM_SHARE_FRAME)(vpicture_t* frame, Handle h);
  189. +typedef void        (*FBM_FLUSH_FRAME)(Handle h, s64 pts);
  190. +typedef void        (*FBM_PRINT_STATUS) (Handle h);
  191. +
  192. +
  193. +//* define function prototype for VBV bitstream manage opearation.
  194. +typedef vstream_data_t* (*VBV_REQUEST_BITSTREAM_FRAME)(Handle vbv);
  195. +typedef void            (*VBV_RETURN_BITSTREAM_FRAME)(vstream_data_t* stream, Handle vbv);
  196. +typedef void            (*VBV_FLUSH_BITSTREAM_FRAME)(vstream_data_t* vstream, Handle vbv);
  197. +typedef u8*             (*VBV_GET_BASE_ADDR)(Handle vbv);
  198. +typedef u32             (*VBV_GET_SIZE)(Handle vbv);
  199. +
  200. +//*******************************************************//
  201. +//****** Functions for Frame Buffer Controlling. ********//
  202. +//*******************************************************//
  203. +typedef struct FRAME_BUFFER_MANAGE_INTERFACE
  204. +{
  205. +    FBM_RELEASE       fbm_release;        //* release frame buffer manage module;
  206. +    FBM_REQUEST_FRAME fbm_request_frame;  //* decoder request one empty frame;
  207. +    FBM_RETURN_FRAME  fbm_return_frame;   //* decoder return one valid or invalid frame;
  208. +    FBM_SHARE_FRAME   fbm_share_frame;    //* decoder using the frame, but this frame should display now.
  209. +    FBM_INIT_EX          fbm_init_ex;        //*
  210. +    FBM_INIT_EX_YV12  fbm_init_ex_yv12;
  211. +    FBM_INIT_YV32    fbm_init_yv32;
  212. +    FBM_FLUSH_FRAME   fbm_flush_frame;
  213. +    FBM_PRINT_STATUS  fbm_print_status;
  214. +}IFBM_t;
  215. +
  216. +
  217. +//*******************************************************//
  218. +//********** Functions for VBV Controlling. *************//
  219. +//*******************************************************//
  220. +typedef struct BITSTREAM_FRAME_MANAGE_INTERFACE
  221. +{
  222. +    VBV_REQUEST_BITSTREAM_FRAME vbv_request_bitstream_frame;
  223. +    VBV_RETURN_BITSTREAM_FRAME  vbv_return_bitstream_frame;
  224. +    VBV_FLUSH_BITSTREAM_FRAME   vbv_flush_bitstream_frame;
  225. +    VBV_GET_BASE_ADDR           vbv_get_base_addr;
  226. +    VBV_GET_SIZE                vbv_get_size;
  227. +}IVBV_t;
  228. +
  229. +
  230. +extern IFBM_t       IFBM;
  231. +extern IVBV_t       IVBV;
  232. +
  233. +#ifdef __cplusplus
  234. +}
  235. +#endif
  236. +
  237. +#endif
  238. +
  239. diff -b -u -r -N '--exclude=.git' linux-armhf/drv_display_sun4i.h linux-armel_new/drv_display_sun4i.h
  240. --- linux-armhf/drv_display_sun4i.h 2013-06-19 12:18:15.000000000 +0200
  241. +++ linux-armel_new/drv_display_sun4i.h 2013-06-19 12:18:14.000000000 +0200
  242. @@ -1,16 +1,13 @@
  243.  #ifndef __DRV_DISPLAY_H__
  244.  #define __DRV_DISPLAY_H__
  245.  
  246. +#include "libve_types.h"
  247.  #define __bool signed char
  248.  
  249. -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  250. -#ifndef __BSP_DRV_DISPLAY_H__
  251. -#define __BSP_DRV_DISPLAY_H__
  252. -
  253. -typedef struct {unsigned char  alpha; unsigned char  red; unsigned char  green; unsigned char blue; }__disp_color_t;
  254. -typedef struct {int x; int y; unsigned int width; unsigned int height;}__disp_rect_t;
  255. -typedef struct {unsigned int width;unsigned int height;                   }__disp_rectsz_t;
  256. -typedef struct {int x; int y;                           }__disp_pos_t;
  257. +typedef struct {__u8  alpha;__u8 red;__u8 green; __u8 blue; }__disp_color_t;
  258. +typedef struct {__s32 x; __s32 y; __u32 width; __u32 height;}__disp_rect_t;
  259. +typedef struct {__u32 width;__u32 height;                   }__disp_rectsz_t;
  260. +typedef struct {__s32 x; __s32 y;                           }__disp_pos_t;
  261.  
  262.  
  263.  typedef enum
  264. @@ -39,17 +36,17 @@
  265.  
  266.  typedef enum
  267.  {
  268. -    DISP_MOD_INTERLEAVED        =0x1,   //interleaved,1个地址
  269. -    DISP_MOD_NON_MB_PLANAR      =0x0,   //无宏块平面模式,3个地址,RGB/YUV每个channel分别存放
  270. -    DISP_MOD_NON_MB_UV_COMBINED =0x2,   //无宏块UV打包模式,2个地址,Yå’ŒUV分别存放
  271. -    DISP_MOD_MB_PLANAR          =0x4,   //宏块平面模式,3个地址,RGB/YUV每个channel分别存放
  272. -    DISP_MOD_MB_UV_COMBINED     =0x6,   //宏块UV打包模式 ,2个地址,Yå’ŒUV分别存放
  273. +    DISP_MOD_INTERLEAVED        =0x1,   //interleaved,1¸öµØÖ·
  274. +    DISP_MOD_NON_MB_PLANAR      =0x0,   //ÎÞºê¿éÆ½ÃæÄ£Ê½,3¸öµØÖ·,RGB/YUVÿ¸öchannel·Ö±ð´æ·Å
  275. +    DISP_MOD_NON_MB_UV_COMBINED =0x2,   //ÎÞºê¿éUV´ò°üģʽ,2¸öµØÖ·,YºÍUV·Ö±ð´æ·Å
  276. +    DISP_MOD_MB_PLANAR          =0x4,   //ºê¿éÆ½ÃæÄ£Ê½,3¸öµØÖ·,RGB/YUVÿ¸öchannel·Ö±ð´æ·Å
  277. +    DISP_MOD_MB_UV_COMBINED     =0x6,   //ºê¿éUV´ò°üģʽ ,2¸öµØÖ·,YºÍUV·Ö±ð´æ·Å
  278.  }__disp_pixel_mod_t;
  279.  
  280.  typedef enum
  281.  {
  282.  //for interleave argb8888
  283. -    DISP_SEQ_ARGB   =0x0,//A在高位
  284. +    DISP_SEQ_ARGB   =0x0,//AÔÚ¸ßλ
  285.      DISP_SEQ_BGRA   =0x2,
  286.  
  287.  //for nterleaved yuv422
  288. @@ -67,12 +64,12 @@
  289.      DISP_SEQ_VUVU   =0xa,
  290.  
  291.  //for 16bpp rgb
  292. -    DISP_SEQ_P10    = 0xd,//p1在高位
  293. -    DISP_SEQ_P01    = 0xe,//p0在高位
  294. +    DISP_SEQ_P10    = 0xd,//p1ÔÚ¸ßλ
  295. +    DISP_SEQ_P01    = 0xe,//p0ÔÚ¸ßλ
  296.  
  297.  //for planar format or 8bpp rgb
  298. -    DISP_SEQ_P3210  = 0xf,//p3在高位
  299. -    DISP_SEQ_P0123  = 0x10,//p0在高位
  300. +    DISP_SEQ_P3210  = 0xf,//p3ÔÚ¸ßλ
  301. +    DISP_SEQ_P0123  = 0x10,//p0ÔÚ¸ßλ
  302.  
  303.  //for 4bpp rgb
  304.      DISP_SEQ_P76543210  = 0x11,
  305. @@ -96,7 +93,7 @@
  306.  typedef enum
  307.  {
  308.      DISP_3D_SRC_MODE_TB = 0x0,//top bottom
  309. -    DISP_3D_SRC_MODE_FP = 0x1,//frame packing
  310. +    DISP_3D_SRC_MODE_FP = 0x1,//frame packing,left and right picture in separate address
  311.      DISP_3D_SRC_MODE_SSF = 0x2,//side by side full
  312.      DISP_3D_SRC_MODE_SSH = 0x3,//side by side half
  313.      DISP_3D_SRC_MODE_LI = 0x4,//line interleaved
  314. @@ -104,14 +101,12 @@
  315.  
  316.  typedef enum
  317.  {
  318. -    //for lcd
  319.      DISP_3D_OUT_MODE_CI_1 = 0x5,//column interlaved 1
  320.      DISP_3D_OUT_MODE_CI_2 = 0x6,//column interlaved 2
  321.      DISP_3D_OUT_MODE_CI_3 = 0x7,//column interlaved 3
  322.      DISP_3D_OUT_MODE_CI_4 = 0x8,//column interlaved 4
  323.      DISP_3D_OUT_MODE_LIRGB = 0x9,//line interleaved rgb
  324.  
  325. -    //for hdmi
  326.      DISP_3D_OUT_MODE_TB = 0x0,//top bottom
  327.      DISP_3D_OUT_MODE_FP = 0x1,//frame packing
  328.      DISP_3D_OUT_MODE_SSF = 0x2,//side by side full
  329. @@ -130,6 +125,13 @@
  330.  
  331.  typedef enum
  332.  {
  333. +    DISP_COLOR_RANGE_16_255 = 0,
  334. +    DISP_COLOR_RANGE_0_255 = 1,
  335. +    DISP_COLOR_RANGE_16_235 = 2,
  336. +}__disp_color_range_t;
  337. +
  338. +typedef enum
  339. +{
  340.      DISP_OUTPUT_TYPE_NONE   = 0,
  341.      DISP_OUTPUT_TYPE_LCD    = 1,
  342.      DISP_OUTPUT_TYPE_TV     = 2,
  343. @@ -159,6 +161,10 @@
  344.      DISP_TV_MOD_1080P_50HZ          = 9,
  345.      DISP_TV_MOD_1080P_60HZ          = 0xa,
  346.      DISP_TV_MOD_1080P_24HZ_3D_FP    = 0x17,
  347. +    DISP_TV_MOD_720P_50HZ_3D_FP     = 0x18,
  348. +    DISP_TV_MOD_720P_60HZ_3D_FP     = 0x19,
  349. +    DISP_TV_MOD_1080P_25HZ          = 0x1a,
  350. +    DISP_TV_MOD_1080P_30HZ          = 0x1b,
  351.      DISP_TV_MOD_PAL                 = 0xb,
  352.      DISP_TV_MOD_PAL_SVIDEO          = 0xc,
  353.      DISP_TV_MOD_NTSC                = 0xe,
  354. @@ -167,7 +173,7 @@
  355.      DISP_TV_MOD_PAL_M_SVIDEO        = 0x12,
  356.      DISP_TV_MOD_PAL_NC              = 0x14,
  357.      DISP_TV_MOD_PAL_NC_SVIDEO       = 0x15,
  358. -    DISP_TV_MODE_NUM               = 0x18,
  359. +    DISP_TV_MODE_NUM               = 0x1c,
  360.  }__disp_tv_mode_t;
  361.  
  362.  typedef enum
  363. @@ -261,6 +267,14 @@
  364.      DISP_EXIT_MODE_CLEAN_PARTLY = 1,//only clean interrupt temply
  365.  }__disp_exit_mode_t;
  366.  
  367. +typedef enum
  368. +{
  369. +    DISP_OUT_CSC_TYPE_LCD        = 0,
  370. +    DISP_OUT_CSC_TYPE_TV         = 1,
  371. +    DISP_OUT_CSC_TYPE_HDMI_YUV   = 2,
  372. +    DISP_OUT_CSC_TYPE_VGA        = 3,
  373. +    DISP_OUT_CSC_TYPE_HDMI_RGB   = 4,
  374. +}__disp_out_csc_type_t;
  375.  
  376.  typedef enum//only for debug!!!
  377.  {
  378. @@ -277,10 +291,11 @@
  379.      DISP_REG_PWM = 10,
  380.  }__disp_reg_index_t;
  381.  
  382. +
  383.  typedef struct
  384.  {
  385. -    unsigned int                   addr[3];    // frame buffer的内容地址,对于rgb类型,只有addr[0]有效
  386. -    __disp_rectsz_t         size;//单位是pixel
  387. +    __u32                   addr[3];    // frame bufferµÄÄÚÈݵØÖ·£¬¶ÔÓÚrgbÀàÐÍ£¬Ö»ÓÐaddr[0]ÓÐЧ
  388. +    __disp_rectsz_t         size;//µ¥Î»ÊÇpixel
  389.      __disp_pixel_fmt_t      format;
  390.      __disp_pixel_seq_t      seq;
  391.      __disp_pixel_mod_t      mode;
  392. @@ -288,17 +303,17 @@
  393.      __disp_cs_mode_t        cs_mode;    //color space
  394.      __bool                  b_trd_src; //if 3d source, used for scaler mode layer
  395.      __disp_3d_src_mode_t    trd_mode; //source 3d mode, used for scaler mode layer
  396. -    unsigned int                   trd_right_addr[3];//used when in frame packing 3d mode
  397. +    __u32                   trd_right_addr[3];//used when in frame packing 3d mode
  398.  }__disp_fb_t;
  399.  
  400.  typedef struct
  401.  {
  402.      __disp_layer_work_mode_t    mode;       //layer work mode
  403.      __bool                      b_from_screen;
  404. -    unsigned char                        pipe;       //layer pipe,0/1,if in scaler mode, scaler0 must be pipe0, scaler1 must be pipe1
  405. -    unsigned char                        prio;       //layer priority,can get layer prio,but never set layer prio,从底至顶,优先级由低至高
  406. +    __u8                        pipe;       //layer pipe,0/1,if in scaler mode, scaler0 must be pipe0, scaler1 must be pipe1
  407. +    __u8                        prio;       //layer priority,can get layer prio,but never set layer prio,´Óµ×ÖÁ¶¥,ÓÅÏȼ¶ÓɵÍÖÁ¸ß
  408.      __bool                      alpha_en;   //layer global alpha enable
  409. -    unsigned short                       alpha_val;  //layer global alpha value
  410. +    __u16                       alpha_val;  //layer global alpha value
  411.      __bool                      ck_enable;  //layer color key enable
  412.      __disp_rect_t               src_win;    // framebuffer source window,only care x,y if is not scaler mode
  413.      __disp_rect_t               scn_win;    // screen window
  414. @@ -311,21 +326,21 @@
  415.  {
  416.      __disp_color_t   ck_max;
  417.      __disp_color_t   ck_min;
  418. -    unsigned int             red_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  419. -    unsigned int             green_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  420. -    unsigned int             blue_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  421. +    __u32             red_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  422. +    __u32             green_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  423. +    __u32             blue_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or color<min
  424.  }__disp_colorkey_t;
  425.  
  426.  typedef struct
  427.  {
  428. -    int   id;
  429. -    unsigned int   addr[3];
  430. -    unsigned int   addr_right[3];//used when in frame packing 3d mode
  431. +    __s32   id;
  432. +    __u32   addr[3];
  433. +    __u32   addr_right[3];//used when in frame packing 3d mode
  434.      __bool  interlace;
  435.      __bool  top_field_first;
  436. -    unsigned int   frame_rate; // *FRAME_RATE_BASE(现在定为1000)
  437. -    unsigned int   flag_addr;//dit maf flag address
  438. -    unsigned int   flag_stride;//dit maf flag line stride
  439. +    __u32   frame_rate; // *FRAME_RATE_BASE(ÏÖÔÚ¶¨Îª1000)
  440. +    __u32   flag_addr;//dit maf flag address
  441. +    __u32   flag_stride;//dit maf flag line stride
  442.      __bool  maf_valid;
  443.      __bool  pre_frame_valid;
  444.  }__disp_video_fb_t;
  445. @@ -339,7 +354,7 @@
  446.  typedef struct
  447.  {
  448.      __disp_hwc_mode_t     pat_mode;
  449. -    unsigned int                 addr;
  450. +    __u32                 addr;
  451.  }__disp_hwc_pattern_t;
  452.  
  453.  typedef struct
  454. @@ -347,7 +362,7 @@
  455.      __disp_fb_t     input_fb;
  456.      __disp_rect_t   source_regn;
  457.      __disp_fb_t     output_fb;
  458. -    //__disp_rect_t   out_regn;
  459. +    __disp_rect_t   out_regn;
  460.  }__disp_scaler_para_t;
  461.  
  462.  typedef struct
  463. @@ -365,128 +380,146 @@
  464.  
  465.  typedef struct
  466.  {
  467. -    int (*Hdmi_open)(void);
  468. -    int (*Hdmi_close)(void);
  469. -    int (*hdmi_set_mode)(__disp_tv_mode_t mode);
  470. -    int (*hdmi_mode_support)(__disp_tv_mode_t mode);
  471. -    int (*hdmi_get_HPD_status)(void);
  472. -    int (*hdmi_set_pll)(unsigned int pll, unsigned int clk);
  473. +    __s32 (*Hdmi_open)(void);
  474. +    __s32 (*Hdmi_close)(void);
  475. +    __s32 (*hdmi_set_mode)(__disp_tv_mode_t mode);
  476. +    __s32 (*hdmi_mode_support)(__disp_tv_mode_t mode);
  477. +    __s32 (*hdmi_get_HPD_status)(void);
  478. +    __s32 (*hdmi_set_pll)(__u32 pll, __u32 clk);
  479. +    __s32 (*hdmi_dvi_enable)(__u32 mode);
  480. +    __s32 (*hdmi_dvi_support)(void);
  481. +    __s32 (*hdmi_get_input_csc)(void);
  482. +    __s32 (*hdmi_suspend)(void);
  483. +    __s32 (*hdmi_resume)(void);
  484.  }__disp_hdmi_func;
  485.  
  486.  typedef struct
  487.  {
  488. -   unsigned int   lcd_x;
  489. -   unsigned int   lcd_y;
  490. -   unsigned int   lcd_dclk_freq;
  491. -   unsigned int   lcd_pwm_not_used;
  492. -   unsigned int   lcd_pwm_ch;
  493. -   unsigned int   lcd_pwm_freq;
  494. -   unsigned int   lcd_pwm_pol;
  495. -   unsigned int   lcd_srgb;
  496. -   unsigned int   lcd_swap;
  497. -
  498. -   unsigned int   lcd_if; //0:hv(sync+de); 1:8080; 2:ttl; 3:lvds
  499. -
  500. -   unsigned int   lcd_uf;
  501. -   unsigned int   lcd_vt;
  502. -   unsigned int   lcd_ht;
  503. -   unsigned int   lcd_vbp;
  504. -   unsigned int   lcd_hbp;
  505. -
  506. -   unsigned int   lcd_hv_if;
  507. -   unsigned int   lcd_hv_smode;
  508. -   unsigned int   lcd_hv_s888_if;
  509. -   unsigned int   lcd_hv_syuv_if;
  510. -   unsigned int   lcd_hv_vspw;
  511. -   unsigned int   lcd_hv_hspw;
  512. -   unsigned int   lcd_hv_lde_used;
  513. -   unsigned int   lcd_hv_lde_iovalue;
  514. -
  515. -   unsigned int   lcd_ttl_stvh;
  516. -   unsigned int   lcd_ttl_stvdl;
  517. -   unsigned int   lcd_ttl_stvdp;
  518. -   unsigned int   lcd_ttl_ckvt;
  519. -   unsigned int   lcd_ttl_ckvh;
  520. -   unsigned int   lcd_ttl_ckvd;
  521. -   unsigned int   lcd_ttl_oevt;
  522. -   unsigned int   lcd_ttl_oevh;
  523. -   unsigned int   lcd_ttl_oevd;
  524. -   unsigned int   lcd_ttl_sthh;
  525. -   unsigned int   lcd_ttl_sthd;
  526. -   unsigned int   lcd_ttl_oehh;
  527. -   unsigned int   lcd_ttl_oehd;
  528. -   unsigned int   lcd_ttl_revd;
  529. -   unsigned int   lcd_ttl_datarate;
  530. -   unsigned int   lcd_ttl_revsel;
  531. -   unsigned int   lcd_ttl_datainv_en;
  532. -   unsigned int   lcd_ttl_datainv_sel;
  533. -
  534. -   unsigned int   lcd_lvds_ch;        // 0: single channel; 1:dual channel
  535. -   unsigned int   lcd_lvds_mode;      // 0:NS mode; 1:JEIDA mode
  536. -   unsigned int    lcd_lvds_bitwidth;  // 0:24bit; 1:18bit
  537. -   unsigned int   lcd_lvds_io_cross;   // 0:normal; 1:pn cross
  538. -
  539. -   unsigned int   lcd_cpu_if;//0:18bit; 1:16bit mode0; 2:16bit mode1; 3:16bit mode2; 4:16bit mode3; 5:9bit; 6:8bit 256K; 7:8bit 65K
  540. -   unsigned int   lcd_cpu_da;
  541. -   unsigned int   lcd_frm;
  542. -
  543. -   unsigned int   lcd_io_cfg0;
  544. -   unsigned int   lcd_io_cfg1;
  545. -   unsigned int   lcd_io_strength;
  546. -
  547. -   unsigned int   lcd_gamma_correction_en;
  548. -   unsigned int   lcd_gamma_tbl[256];
  549. -
  550. -   unsigned int   lcd_hv_srgb_seq0;
  551. -   unsigned int   lcd_hv_srgb_seq1;
  552. -   unsigned int   lcd_hv_syuv_seq;
  553. -   unsigned int   lcd_hv_syuv_fdly;
  554. -
  555. -   unsigned int   port_index;
  556. -   unsigned int   start_delay;//not need to config for user
  557. -   unsigned int   tcon_index; //not need to config for user
  558. +   __u32   lcd_x;
  559. +   __u32   lcd_y;
  560. +   __u32   lcd_dclk_freq;
  561. +   __u32   lcd_pwm_not_used;
  562. +   __u32   lcd_pwm_ch;
  563. +   __u32   lcd_pwm_freq;
  564. +   __u32   lcd_pwm_pol;
  565. +   __u32   lcd_srgb;
  566. +   __u32   lcd_swap;
  567. +
  568. +   __u32   lcd_if; //0:hv(sync+de); 1:8080; 2:ttl; 3:lvds
  569. +
  570. +   __u32   lcd_uf;
  571. +   __u32   lcd_vt;
  572. +   __u32   lcd_ht;
  573. +   __u32   lcd_vbp;
  574. +   __u32   lcd_hbp;
  575. +
  576. +   __u32   lcd_hv_if;
  577. +   __u32   lcd_hv_smode;
  578. +   __u32   lcd_hv_s888_if;
  579. +   __u32   lcd_hv_syuv_if;
  580. +   __u32   lcd_hv_vspw;
  581. +   __u32   lcd_hv_hspw;
  582. +   __u32   lcd_hv_lde_used;
  583. +   __u32   lcd_hv_lde_iovalue;
  584. +
  585. +   __u32   lcd_ttl_stvh;
  586. +   __u32   lcd_ttl_stvdl;
  587. +   __u32   lcd_ttl_stvdp;
  588. +   __u32   lcd_ttl_ckvt;
  589. +   __u32   lcd_ttl_ckvh;
  590. +   __u32   lcd_ttl_ckvd;
  591. +   __u32   lcd_ttl_oevt;
  592. +   __u32   lcd_ttl_oevh;
  593. +   __u32   lcd_ttl_oevd;
  594. +   __u32   lcd_ttl_sthh;
  595. +   __u32   lcd_ttl_sthd;
  596. +   __u32   lcd_ttl_oehh;
  597. +   __u32   lcd_ttl_oehd;
  598. +   __u32   lcd_ttl_revd;
  599. +   __u32   lcd_ttl_datarate;
  600. +   __u32   lcd_ttl_revsel;
  601. +   __u32   lcd_ttl_datainv_en;
  602. +   __u32   lcd_ttl_datainv_sel;
  603. +
  604. +   __u32   lcd_lvds_ch;        // 0: single channel; 1:dual channel
  605. +   __u32   lcd_lvds_mode;      // 0:NS mode; 1:JEIDA mode
  606. +   __u32   lcd_lvds_bitwidth;  // 0:24bit; 1:18bit
  607. +   __u32   lcd_lvds_io_cross;  // 0:normal; 1:pn cross
  608. +  
  609. +   __u32   lcd_cpu_if;//0:18bit; 1:16bit mode0; 2:16bit mode1; 3:16bit mode2; 4:16bit mode3; 5:9bit; 6:8bit 256K; 7:8bit 65K
  610. +   __u32   lcd_cpu_da;
  611. +   __u32   lcd_frm;
  612. +
  613. +   __u32   lcd_io_cfg0;
  614. +   __u32   lcd_io_cfg1;
  615. +   __u32   lcd_io_strength;
  616. +
  617. +   __u32   lcd_gamma_correction_en;
  618. +   __u32   lcd_gamma_tbl[256];
  619. +
  620. +   __u32   lcd_hv_srgb_seq0;
  621. +   __u32   lcd_hv_srgb_seq1;
  622. +   __u32   lcd_hv_syuv_seq;
  623. +   __u32   lcd_hv_syuv_fdly;
  624. +
  625. +   __u32   port_index;
  626. +   __u32   start_delay;//not need to config for user
  627. +   __u32   tcon_index; //not need to config for user
  628.  }__panel_para_t;
  629.  
  630.  typedef struct
  631.  {
  632. -   unsigned int base_lcdc0;
  633. -   unsigned int base_lcdc1;
  634. -   unsigned int base_pioc;
  635. -   unsigned int base_ccmu;
  636. -   unsigned int base_pwm;
  637. +   __u32   pixel_clk;//khz
  638. +   __u32   hor_pixels;
  639. +   __u32   ver_pixels;
  640. +   __u32   hor_total_time;
  641. +   __u32   hor_front_porch;
  642. +   __u32   hor_sync_time; 
  643. +   __u32   hor_back_porch;
  644. +   __u32   ver_total_time;
  645. +   __u32   ver_front_porch;
  646. +   __u32   ver_sync_time;
  647. +   __u32   ver_back_porch;
  648. +}__disp_tcon_timing_t;
  649. +
  650. +typedef struct
  651. +{
  652. +   __u32 base_lcdc0;
  653. +   __u32 base_lcdc1;
  654. +   __u32 base_pioc;
  655. +   __u32 base_ccmu;
  656. +   __u32 base_pwm;
  657.  }__reg_bases_t;
  658.  
  659. -typedef void (*LCD_FUNC) (unsigned int sel);
  660. +typedef void (*LCD_FUNC) (__u32 sel);
  661.  typedef struct lcd_function
  662.  {
  663.      LCD_FUNC func;
  664. -    unsigned int delay;//ms
  665. +    __u32 delay;//ms
  666.  }__lcd_function_t;
  667.  
  668.  typedef struct lcd_flow
  669.  {
  670.      __lcd_function_t func[5];
  671. -    unsigned int func_num;
  672. +    __u32 func_num;
  673. +    __u32 cur_step;
  674.  }__lcd_flow_t;
  675.  
  676.  typedef struct
  677.  {
  678.      void (*cfg_panel_info)(__panel_para_t * info);
  679. -    int (*cfg_open_flow)(unsigned int sel);
  680. -    int (*cfg_close_flow)(unsigned int sel);
  681. -    int (*lcd_user_defined_func)(unsigned int sel, unsigned int para1, unsigned int para2, unsigned int para3);
  682. +    __s32 (*cfg_open_flow)(__u32 sel);
  683. +    __s32 (*cfg_close_flow)(__u32 sel);
  684. +    __s32 (*lcd_user_defined_func)(__u32 sel, __u32 para1, __u32 para2, __u32 para3);
  685.  }__lcd_panel_fun_t;
  686.  
  687.  typedef struct
  688.  {
  689.      __bool enable;
  690. -    unsigned int active_state;
  691. -    unsigned int duty_ns;
  692. -    unsigned int period_ns;
  693. +    __u32 active_state;
  694. +    __u32 duty_ns;
  695. +    __u32 period_ns;
  696.  }__pwm_info_t;
  697. -
  698. -#endif
  699. -
  700.  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  701.  
  702.  typedef enum
  703. @@ -494,29 +527,29 @@
  704.      FB_MODE_SCREEN0 = 0,
  705.      FB_MODE_SCREEN1 = 1,
  706.      FB_MODE_DUAL_SAME_SCREEN_TB = 2,//two screen, top buffer for screen0, bottom buffer for screen1
  707. -    FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS = 3,//two screen, they have same contents;
  708. +    FB_MODE_SCREEN0_PARTLY = 3,
  709.  }__fb_mode_t;
  710.  
  711.  typedef struct
  712.  {
  713.     __fb_mode_t                 fb_mode;
  714.     __disp_layer_work_mode_t    mode;
  715. -   unsigned int                       buffer_num;
  716. -   unsigned int                       width;
  717. -   unsigned int                       height;
  718. -
  719. -   unsigned int                       output_width;//used when scaler mode
  720. -   unsigned int                       output_height;//used when scaler mode
  721. -
  722. -   unsigned int                       primary_screen_id;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  723. -   unsigned int                       aux_output_width;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  724. -   unsigned int                       aux_output_height;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  725. +   __u32                       buffer_num;
  726. +   __u32                       width;
  727. +   __u32                       height;
  728. +  
  729. +   __u32                       output_width;//used when scaler mode
  730. +   __u32                       output_height;//used when scaler mode
  731. +  
  732. +   __u32                       primary_screen_id;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  733. +   __u32                       aux_output_width;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  734. +   __u32                       aux_output_height;//used when FB_MODE_DUAL_DIFF_SCREEN_SAME_CONTENTS
  735.  
  736.  //maybe not used anymore
  737. -   unsigned int                       line_length;//in byte unit
  738. -   unsigned int                       smem_len;
  739. -   unsigned int                       ch1_offset;//use when PLANAR or UV_COMBINED mode
  740. -   unsigned int                       ch2_offset;//use when PLANAR mode
  741. +   __u32                       line_length;//in byte unit
  742. +   __u32                       smem_len;
  743. +   __u32                       ch1_offset;//use when PLANAR or UV_COMBINED mode
  744. +   __u32                       ch2_offset;//use when PLANAR mode
  745.  }__disp_fb_create_para_t;
  746.  
  747.  typedef enum
  748. @@ -525,14 +558,14 @@
  749.      DISP_INIT_MODE_SCREEN1 = 1,//fb0 for screen1
  750.      DISP_INIT_MODE_TWO_DIFF_SCREEN = 2,//fb0 for screen0 and fb1 for screen1
  751.      DISP_INIT_MODE_TWO_SAME_SCREEN = 3,//fb0(up buffer for screen0, down buffer for screen1)
  752. -    DISP_INIT_MODE_TWO_DIFF_SCREEN_SAME_CONTENTS = 4,//fb0 for two different screen(screen0 layer is normal layer, screen1 layer is scaler layer);
  753. +    DISP_INIT_MODE_SCREEN0_GPU = 4,//fb0(fb size fix to 1920*1080,but the source window is variable according to the output)
  754.  }__disp_init_mode_t;
  755.  
  756.  
  757.  typedef struct
  758.  {
  759.      __bool                  b_init;
  760. -    __disp_init_mode_t      disp_mode;//0:single screen0(fb0); 1:single screen1(fb0);  2:dual diff screen(fb0, fb1); 3:dual same screen(fb0 up and down); 4:dual diff screen same contents(fb0)
  761. +    __disp_init_mode_t      disp_mode;
  762.  
  763.      //for screen0 and screen1
  764.      __disp_output_type_t    output_type[2];
  765. @@ -540,7 +573,7 @@
  766.      __disp_vga_mode_t       vga_mode[2];
  767.  
  768.      //for fb0 and fb1
  769. -    unsigned int                   buffer_num[2];
  770. +    __u32                   buffer_num[2];
  771.      __bool                  scaler_mode[2];
  772.      __disp_pixel_fmt_t      format[2];
  773.      __disp_pixel_seq_t      seq[2];
  774. @@ -583,6 +616,15 @@
  775.      DISP_CMD_CAPTURE_SCREEN = 0x20,//caputre screen and scaler to dram
  776.      DISP_CMD_DE_FLICKER_ON = 0x21,
  777.      DISP_CMD_DE_FLICKER_OFF = 0x22,
  778. +    DISP_CMD_GET_DE_FLICKER_EN = 0x23,
  779. +    DISP_CMD_DRC_ON = 0x24,
  780. +    DISP_CMD_DRC_OFF = 0x25,
  781. +    DISP_CMD_GET_DRC_EN = 0x26,
  782. +    DISP_CMD_DE_FLICKER_SET_WINDOW = 0x27,
  783. +    DISP_CMD_DRC_SET_WINDOW = 0x28,
  784. +    DISP_CMD_SET_HUE = 0x29,
  785. +    DISP_CMD_GET_HUE = 0x2a,
  786. +    DISP_CMD_VSYNC_EVENT_EN = 0x2b,
  787.  
  788.  //----layer----
  789.      DISP_CMD_LAYER_REQUEST = 0x40,
  790. @@ -612,10 +654,10 @@
  791.      DISP_CMD_LAYER_GET_PRIO = 0x58,
  792.      DISP_CMD_LAYER_SET_SMOOTH = 0x59,
  793.      DISP_CMD_LAYER_GET_SMOOTH = 0x5a,
  794. -    DISP_CMD_LAYER_SET_BRIGHT = 0x5b,//亮度
  795. -    DISP_CMD_LAYER_SET_CONTRAST = 0x5c,//对比度
  796. -    DISP_CMD_LAYER_SET_SATURATION = 0x5d,//饱和度
  797. -    DISP_CMD_LAYER_SET_HUE = 0x5e,//色调,色度
  798. +    DISP_CMD_LAYER_SET_BRIGHT = 0x5b,//ÁÁ¶È
  799. +    DISP_CMD_LAYER_SET_CONTRAST = 0x5c,//¶Ô±È¶È
  800. +    DISP_CMD_LAYER_SET_SATURATION = 0x5d,//±¥ºÍ¶È
  801. +    DISP_CMD_LAYER_SET_HUE = 0x5e,//É«µ÷,É«¶È
  802.      DISP_CMD_LAYER_GET_BRIGHT = 0x5f,
  803.      DISP_CMD_LAYER_GET_CONTRAST = 0x60,
  804.      DISP_CMD_LAYER_GET_SATURATION = 0x61,
  805. @@ -639,6 +681,7 @@
  806.      DISP_CMD_SCALER_REQUEST = 0x80,
  807.      DISP_CMD_SCALER_RELEASE = 0x81,
  808.      DISP_CMD_SCALER_EXECUTE = 0x82,
  809. +    DISP_CMD_SCALER_EXECUTE_EX = 0x83,
  810.  
  811.  //----hwc----
  812.      DISP_CMD_HWC_OPEN = 0xc0,
  813. @@ -678,6 +721,7 @@
  814.      DISP_CMD_TV_GET_DAC_STATUS = 0x188,
  815.      DISP_CMD_TV_SET_DAC_SOURCE = 0x189,
  816.      DISP_CMD_TV_GET_DAC_SOURCE = 0x18a,
  817. +    DISP_CMD_TV_NOTCH_FILTER_ON = 0x18b,
  818.  
  819.  //----hdmi----
  820.      DISP_CMD_HDMI_ON = 0x1c0,
  821. diff -b -u -r -N '--exclude=.git' linux-armhf/fbm/fbm.c linux-armel_new/fbm/fbm.c
  822. --- linux-armhf/fbm/fbm.c   2013-06-19 12:18:15.000000000 +0200
  823. +++ linux-armel_new/fbm/fbm.c   2013-06-19 12:18:14.000000000 +0200
  824. @@ -1,8 +1,16 @@
  825. -
  826. +/*
  827. + * Nerver use log machanism defined in awprintf.h
  828. + * when debuging in case of  multi process.
  829. + * Use LOGX defined by Android.
  830. + */
  831. +//#define LOG_NDEBUG 0
  832. +//#define LOG_TAG "fbm"
  833. +//#include <CDX_Debug.h>
  834.  
  835.  #include "fbm.h"
  836. -#include "vdecoder_config.h"
  837. -#include "vdecoder.h"
  838. +//#include "vdecoder_config.h"
  839. +//#include "vdecoder.h"
  840. +#include "commom_type.h"
  841.  #include "awprintf.h"
  842.  
  843.  static void fbm_enqueue(frame_info_t** pp_head, frame_info_t* p);
  844. @@ -13,10 +21,9 @@
  845.  static void unlock(fbm_t* fbm);
  846.  
  847.  
  848. -#if 0
  849. -void print_fbm_status(Handle h)
  850. +void fbm_print_status(Handle h)
  851.  {
  852. -   const u8* status_string[5] =
  853. +   const char* status_string[5] =
  854.     {
  855.         "FS_EMPTY",
  856.         "FS_DECODER_USING",
  857. @@ -26,44 +33,41 @@
  858.     };
  859.  
  860.     fbm_t*        fbm;
  861. -   frame_info_t* p;
  862.     u32           i;
  863. -
  864.     fbm = (fbm_t*)h;
  865.  
  866.  #if 0
  867. -   LOGV("  empty queue:\n");
  868. +   frame_info_t* p;
  869. +   Log("  empty queue:\n");
  870.  
  871.     p = fbm->empty_queue;
  872.  
  873.     while(p)
  874.     {
  875. -       LOGV("    frame %d, status = %s.\n", p->picture.id, status_string[p->status]);
  876. +       Log("    frame %d, status = %s.\n", p->picture.id, status_string[p->status]);
  877.         p = p->next;
  878.     }
  879.  
  880. -   LOGV("\n");
  881. +   Log("\n");
  882.  
  883. -   LOGV("  display queue:\n");
  884. +   Log("  display queue:\n");
  885.     p = fbm->display_queue;
  886.     while(p)
  887.     {
  888. -       LOGV("    frame %d, status = %s.\n", p->picture.id, status_string[p->status]);
  889. +       Log("    frame %d, status = %s.\n", p->picture.id, status_string[p->status]);
  890.         p = p->next;
  891.     }
  892.  
  893. -   LOGV("\n");
  894. +   Log("\n");
  895.  #endif
  896. -   LOGV("  total queue:\n");
  897. +   printf("  total queue:\n");
  898.     for(i=0; i<fbm->max_frame_num; i++)
  899.     {
  900. -       LOGV("frame=%x,frame %d, status = %s.\n", &(fbm->frames[i].picture), fbm->frames[i].picture.id, status_string[fbm->frames[i].status]);
  901. +       printf("frame=%p, frame %d, status = %s.\n", &(fbm->frames[i].picture), fbm->frames[i].picture.id, status_string[fbm->frames[i].status]);
  902.     }
  903.  
  904. -   LOGV("\n");
  905. +   printf("\n");
  906.  }
  907. -#endif
  908. -
  909.  
  910.  static s32 fbm_alloc_frame_buffer(vpicture_t* picture)
  911.  {
  912. @@ -137,6 +141,126 @@
  913.     return -1;
  914.  }
  915.  
  916. +s32 fbm_alloc_yv32_frame_buffer(vpicture_t* picture)
  917. +{
  918. +    picture->y        = NULL;
  919. +    picture->u        = NULL;
  920. +    picture->v        = NULL;
  921. +    picture->alpha = NULL;
  922. +
  923. +    picture->y2         = NULL;
  924. +    picture->v2         = NULL;
  925. +    picture->u2         = NULL;
  926. +    picture->alpha2  = NULL;
  927. +
  928. +
  929. +   if(picture->size_y != 0)
  930. +   {
  931. +       picture->y = (u8*)mem_palloc(picture->size_y, 1024);
  932. +       if(picture->y == NULL)
  933. +           goto _exit;
  934. +
  935. +   }
  936. +
  937. +   if(picture->size_u != 0)
  938. +   {
  939. +       picture->u = (u8*)mem_palloc(picture->size_u, 1024);
  940. +       if(picture->u == NULL)
  941. +       {
  942. +           goto _exit;
  943. +       }
  944. +   }
  945. +
  946. +   if(picture->size_v != 0)
  947. +   {
  948. +       picture->v = (u8*)mem_palloc(picture->size_v, 1024);
  949. +       if(picture->v == NULL)
  950. +       {
  951. +           goto _exit;
  952. +       }
  953. +   }
  954. +
  955. +   if(picture->size_alpha != 0)
  956. +   {
  957. +       picture->alpha = (u8*)mem_palloc(picture->size_alpha, 1024);
  958. +       if(picture->alpha == NULL)
  959. +       {
  960. +           goto _exit;
  961. +       }
  962. +   }
  963. +
  964. +   if(picture->size_y2 != 0)
  965. +   {
  966. +       picture->y2 = (u8*)mem_palloc(picture->size_y2 + picture->size_u2, 16);
  967. +       if(picture->y2 == NULL)
  968. +           goto _exit;
  969. +
  970. +   }
  971. +
  972. +   return 0;
  973. +
  974. +_exit:
  975. +   if(picture->v != NULL)
  976. +   {
  977. +       mem_pfree(picture->v);
  978. +       picture->v = NULL;
  979. +   }
  980. +   if(picture->u != NULL)
  981. +   {
  982. +       mem_pfree(picture->u);
  983. +       picture->u = NULL;
  984. +   }
  985. +   if(picture->y != NULL)
  986. +   {
  987. +       mem_pfree(picture->y);
  988. +       picture->y = NULL;
  989. +   }
  990. +   if(picture->alpha != NULL){
  991. +       mem_pfree(picture->alpha);
  992. +       picture->alpha = NULL;
  993. +   }
  994. +   if(picture->y2 != NULL)
  995. +   {
  996. +       mem_pfree(picture->y2);
  997. +       picture->y2 = NULL;
  998. +   }
  999. +   return -1;
  1000. +}
  1001. +
  1002. +//mickey
  1003. +static s32 fbm_alloc_yv12_frame_buffer(vpicture_t* picture)
  1004. +{
  1005. +    picture->y        = NULL;
  1006. +    picture->u        = NULL;
  1007. +    picture->v        = NULL;
  1008. +    picture->alpha = NULL;
  1009. +
  1010. +    picture->y2         = NULL;
  1011. +    picture->v2         = NULL;
  1012. +    picture->u2         = NULL;
  1013. +    picture->alpha2  = NULL;
  1014. +
  1015. +   if(picture->size_y != 0)
  1016. +   {
  1017. +       picture->y = (u8*)mem_palloc(picture->size_y + picture->size_u*2, 16);
  1018. +       if(picture->y == NULL)
  1019. +           goto _exit;
  1020. +
  1021. +   }
  1022. +
  1023. +   return 0;
  1024. +
  1025. +_exit:
  1026. +
  1027. +   if(picture->y != NULL)
  1028. +   {
  1029. +       mem_pfree(picture->y);
  1030. +       picture->y = NULL;
  1031. +   }
  1032. +
  1033. +   return -1;
  1034. +}
  1035. +
  1036.  s32 fbm_free_redBlue_frame_buffer(Handle h)
  1037.  {
  1038.      u32 i = 0;
  1039. @@ -252,7 +376,74 @@
  1040.     return 0;
  1041.  }
  1042.  
  1043. +s32 fbm_free_YV12_frame_buffer(Handle h)
  1044. +{
  1045. +    u32 i = 0;
  1046. +    fbm_t*           fbm = NULL;
  1047. +    vpicture_t*   picture = NULL;
  1048. +
  1049. +    fbm = (fbm_t*)h;
  1050. +
  1051. +    if (lock(fbm) != 0)
  1052. +    {
  1053. +        return -1;
  1054. +    }
  1055. +    for(i=0; i<fbm->max_frame_num; i++)
  1056. +   {
  1057. +        picture = &fbm->frames[i].picture;
  1058. +        if(picture->y2 != NULL)
  1059. +       {
  1060. +           mem_pfree(picture->y2);
  1061. +           picture->y2 = NULL;
  1062. +       }
  1063. +    }
  1064. +   unlock(fbm);
  1065. +   return 0;
  1066. +}
  1067. +
  1068. +s32 fbm_alloc_YV12_frame_buffer(Handle h)
  1069. +{
  1070. +    s32          i = 0;
  1071. +    fbm_t*           fbm = NULL;
  1072. +    vpicture_t*   picture = NULL;
  1073. +
  1074. +    fbm = (fbm_t*)h;
  1075. +
  1076. +    if(fbm == NULL)
  1077. +        return -1;
  1078. +
  1079. +    if(lock(fbm) != 0)
  1080. +    {
  1081. +        return -1;
  1082. +    }
  1083. +    picture = &fbm->frames[0].picture;
  1084. +    if(picture->y2!=NULL)
  1085. +    {
  1086. +        unlock(fbm);
  1087. +        return 0;
  1088. +    }
  1089. +
  1090. +    for(i=0; i<(s32)fbm->max_frame_num; i++)
  1091. +    {
  1092. +        picture = &fbm->frames[i].picture;
  1093.  
  1094. +       if(picture->size_y2 != 0)
  1095. +       {
  1096. +           picture->y2 = (u8*)mem_palloc(picture->size_y2 + picture->size_u2, 16);
  1097. +           if(picture->y2 == NULL)
  1098. +               break;
  1099. +       }
  1100. +   }
  1101. +
  1102. +   if(i <(s32)fbm->max_frame_num)
  1103. +   {
  1104. +        unlock(fbm);
  1105. +        fbm_free_YV12_frame_buffer(h);
  1106. +        return -1;
  1107. +   }
  1108. +   unlock(fbm);
  1109. +   return 0;
  1110. +}
  1111.  
  1112.  static s32 fbm_free_frame_buffer(vpicture_t* picture)
  1113.  {
  1114. @@ -315,12 +506,17 @@
  1115.                  u32 size_alpha[2],
  1116.                  _3d_mode_e out_3d_mode,
  1117.                  pixel_format_e format,
  1118. +                u8 is_preview_mode,
  1119.                  void* parent)
  1120.  
  1121.  {
  1122.      s32     i;
  1123.      fbm_t*  fbm;
  1124. -    video_decoder_t* decoder;
  1125. +    //video_decoder_t* decoder;
  1126. +
  1127. +
  1128. +    if(size_y[0] >= (480*272))
  1129. +           max_frame_num = min_frame_num;
  1130.  
  1131.      if(max_frame_num < min_frame_num)
  1132.      {
  1133. @@ -338,16 +534,27 @@
  1134.          return NULL;
  1135.     }
  1136.     mem_set(fbm, 0, sizeof(fbm_t));
  1137. +
  1138. +#if 0
  1139.      libve_io_ctrl(LIBVE_COMMAND_GET_PARENT, (u32)&decoder, parent);
  1140.      if(decoder == NULL)
  1141.      {
  1142.          mem_free(fbm);
  1143.      }
  1144. +
  1145.      if(decoder->status == CEDARV_STATUS_PREVIEW)
  1146.      {
  1147. -        max_frame_num = 1;
  1148. -        min_frame_num = 1;
  1149. +        max_frame_num = 2;
  1150. +        min_frame_num = 2;
  1151. +    }
  1152. +#else
  1153. +    if(is_preview_mode)
  1154. +    {
  1155. +       max_frame_num = 2;
  1156. +        min_frame_num = 2;
  1157.      }
  1158. +
  1159. +#endif
  1160.      //* alloc memory frame buffer.
  1161.      for(i=0; i<(s32)max_frame_num; i++)
  1162.      {
  1163. @@ -404,6 +611,230 @@
  1164.      return (Handle)fbm;
  1165.  }
  1166.  
  1167. +Handle fbm_init_ex_yv12(u32 max_frame_num,
  1168. +                u32 min_frame_num,
  1169. +                u32 size_y[2],
  1170. +                u32 size_u[2],
  1171. +                u32 size_v[2],
  1172. +                u32 size_alpha[2],
  1173. +                _3d_mode_e out_3d_mode,
  1174. +                pixel_format_e format,
  1175. +                u8 is_preview_mode,
  1176. +                void* parent)
  1177. +
  1178. +{
  1179. +    s32     i;
  1180. +    fbm_t*  fbm;
  1181. +    //video_decoder_t* decoder;
  1182. +
  1183. +    if(size_y[0] >= (480*272))
  1184. +           max_frame_num = min_frame_num;
  1185. +    if(max_frame_num < min_frame_num)
  1186. +    {
  1187. +        max_frame_num = min_frame_num;
  1188. +    }
  1189. +   if(min_frame_num > FBM_MAX_FRAME_NUM)
  1190. +       return NULL;
  1191. +
  1192. +   if(max_frame_num > FBM_MAX_FRAME_NUM)
  1193. +       max_frame_num = FBM_MAX_FRAME_NUM;
  1194. +
  1195. +   fbm = (fbm_t*) mem_alloc(sizeof(fbm_t));
  1196. +   if(!fbm)
  1197. +   {
  1198. +        return NULL;
  1199. +   }
  1200. +   mem_set(fbm, 0, sizeof(fbm_t));
  1201. +
  1202. +#if 0
  1203. +    libve_io_ctrl(LIBVE_COMMAND_GET_PARENT, (u32)&decoder, parent);
  1204. +    if(decoder == NULL)
  1205. +    {
  1206. +        mem_free(fbm);
  1207. +    }
  1208. +
  1209. +    if(decoder->status == CEDARV_STATUS_PREVIEW)
  1210. +    {
  1211. +        max_frame_num = 2;
  1212. +        min_frame_num = 2;
  1213. +    }
  1214. +#else
  1215. +    if(is_preview_mode)
  1216. +    {
  1217. +       max_frame_num = 2;
  1218. +        min_frame_num = 2;
  1219. +    }
  1220. +
  1221. +#endif
  1222. +    //* alloc memory frame buffer.
  1223. +    for(i=0; i<(s32)max_frame_num; i++)
  1224. +    {
  1225. +       fbm->frames[i].picture.id         = i;
  1226. +       fbm->frames[i].picture.size_y     = size_y[0];
  1227. +       fbm->frames[i].picture.size_u     = size_u[0]/2;
  1228. +       fbm->frames[i].picture.size_v     = size_u[0]/2;
  1229. +       fbm->frames[i].picture.size_alpha = size_alpha[0];
  1230. +
  1231. +       fbm->frames[i].picture.size_y2      = size_y[1];
  1232. +       fbm->frames[i].picture.size_u2      = size_u[1];
  1233. +       fbm->frames[i].picture.size_v2      = size_v[1];
  1234. +       fbm->frames[i].picture.size_alpha2  = size_alpha[1];
  1235. +
  1236. +       if(fbm_alloc_yv12_frame_buffer(&fbm->frames[i].picture) != 0)
  1237. +       {
  1238. +           break;
  1239. +       }
  1240. +    }
  1241. +    if(i < (s32)min_frame_num)
  1242. +    {
  1243. +       for(; i>=0; i--)
  1244. +           fbm_free_frame_buffer(&fbm->frames[i].picture);
  1245. +
  1246. +       mem_free(fbm);
  1247. +       return NULL;
  1248. +    }
  1249. +
  1250. +    fbm->max_frame_num = i;
  1251. +    /*if(out_3d_mode == _3D_MODE_DOUBLE_STREAM)
  1252. +    {
  1253. +       if(fbm_alloc_redBlue_frame_buffer((Handle)fbm) < 0)
  1254. +       {
  1255. +            fbm_release((Handle)fbm, parent);
  1256. +            return NULL;
  1257. +       }
  1258. +    }*/
  1259. +
  1260. +
  1261. +    //* initialize empty frame queue semaphore.
  1262. +    fbm->mutex = semaphore_create(1);
  1263. +    if(fbm->mutex == NULL)
  1264. +    {
  1265. +        fbm_release((Handle)fbm, parent);
  1266. +        return NULL;
  1267. +    }
  1268. +
  1269. +    //* put all frame to empty frame queue.
  1270. +    for(i=0; i<(s32)fbm->max_frame_num; i++)
  1271. +    {
  1272. +        fbm_enqueue(&fbm->empty_queue, &fbm->frames[i]);
  1273. +    }
  1274. +
  1275. +    return (Handle)fbm;
  1276. +}
  1277. +
  1278. +Handle fbm_init_yv32(u32 max_frame_num,
  1279. +                u32 min_frame_num,
  1280. +                u32 size_y[2],
  1281. +                u32 size_u[2],
  1282. +                u32 size_v[2],
  1283. +                u32 size_alpha[2],
  1284. +                _3d_mode_e out_3d_mode,
  1285. +                pixel_format_e format,
  1286. +                u8 is_preview_mode,
  1287. +                void* parent)
  1288. +
  1289. +{
  1290. +    s32     i;
  1291. +    fbm_t*  fbm;
  1292. +    //video_decoder_t* decoder;
  1293. +
  1294. +
  1295. +    if(size_y[0] >= (480*272))
  1296. +           max_frame_num = min_frame_num;
  1297. +
  1298. +    if(max_frame_num < min_frame_num)
  1299. +    {
  1300. +        max_frame_num = min_frame_num;
  1301. +    }
  1302. +   if(min_frame_num > FBM_MAX_FRAME_NUM)
  1303. +       return NULL;
  1304. +
  1305. +   if(max_frame_num > FBM_MAX_FRAME_NUM)
  1306. +       max_frame_num = FBM_MAX_FRAME_NUM;
  1307. +
  1308. +   fbm = (fbm_t*) mem_alloc(sizeof(fbm_t));
  1309. +   if(!fbm)
  1310. +   {
  1311. +        return NULL;
  1312. +   }
  1313. +   mem_set(fbm, 0, sizeof(fbm_t));
  1314. +
  1315. +#if 0
  1316. +    libve_io_ctrl(LIBVE_COMMAND_GET_PARENT, (u32)&decoder, parent);
  1317. +    if(decoder == NULL)
  1318. +    {
  1319. +        mem_free(fbm);
  1320. +    }
  1321. +
  1322. +    if(decoder->status == CEDARV_STATUS_PREVIEW)
  1323. +    {
  1324. +        max_frame_num = 2;
  1325. +        min_frame_num = 2;
  1326. +    }
  1327. +#else
  1328. +    if(is_preview_mode)
  1329. +    {
  1330. +       max_frame_num = 2;
  1331. +        min_frame_num = 2;
  1332. +    }
  1333. +
  1334. +#endif
  1335. +    //* alloc memory frame buffer.
  1336. +    for(i=0; i<(s32)max_frame_num; i++)
  1337. +    {
  1338. +       fbm->frames[i].picture.id         = i;
  1339. +       fbm->frames[i].picture.size_y     = size_y[0];
  1340. +       fbm->frames[i].picture.size_u     = size_u[0];
  1341. +       fbm->frames[i].picture.size_v     = size_v[0];
  1342. +       fbm->frames[i].picture.size_alpha = size_alpha[0];
  1343. +
  1344. +       fbm->frames[i].picture.size_y2      = size_y[1];
  1345. +       fbm->frames[i].picture.size_u2      = size_u[1];
  1346. +       fbm->frames[i].picture.size_v2      = size_v[1];
  1347. +       fbm->frames[i].picture.size_alpha2  = size_alpha[1];
  1348. +
  1349. +       //if(fbm_alloc_yv32_frame_buffer(&fbm->frames[i].picture) != 0)
  1350. +       if(fbm_alloc_frame_buffer(&fbm->frames[i].picture) != 0)
  1351. +       {
  1352. +           break;
  1353. +       }
  1354. +    }
  1355. +    if(i < (s32)min_frame_num)
  1356. +    {
  1357. +       for(; i>=0; i--)
  1358. +           fbm_free_frame_buffer(&fbm->frames[i].picture);
  1359. +
  1360. +       mem_free(fbm);
  1361. +       return NULL;
  1362. +    }
  1363. +
  1364. +    fbm->max_frame_num = i;
  1365. +//    if(out_3d_mode == _3D_MODE_DOUBLE_STREAM)
  1366. +//    {
  1367. +//       if(fbm_alloc_redBlue_frame_buffer((Handle)fbm) < 0)
  1368. +//       {
  1369. +//            fbm_release((Handle)fbm, parent);
  1370. +//            return NULL;
  1371. +//       }
  1372. +//    }
  1373. +
  1374. +
  1375. +    //* initialize empty frame queue semaphore.
  1376. +    fbm->mutex = semaphore_create(1);
  1377. +    if(fbm->mutex == NULL)
  1378. +    {
  1379. +        fbm_release((Handle)fbm, parent);
  1380. +        return NULL;
  1381. +    }
  1382. +
  1383. +    //* put all frame to empty frame queue.
  1384. +    for(i=0; i<(s32)fbm->max_frame_num; i++)
  1385. +    {
  1386. +        fbm_enqueue(&fbm->empty_queue, &fbm->frames[i]);
  1387. +    }
  1388. +
  1389. +    return (Handle)fbm;
  1390. +}
  1391.  
  1392.  void fbm_release(Handle h, void* parent)
  1393.  {
  1394. @@ -545,7 +976,6 @@
  1395.      return 0;
  1396.  }
  1397.  
  1398. -
  1399.  vpicture_t* fbm_decoder_request_frame(Handle h)
  1400.  {
  1401.     u32           i;
  1402. @@ -753,6 +1183,39 @@
  1403.     return ;
  1404.  }
  1405.  
  1406. +/*MVC MINOR DISCARD.By mickey.*/
  1407. +void fbm_flush_frame(Handle h, s64 pts)
  1408. +{
  1409. +   fbm_t * fbm;
  1410. +   frame_info_t* display_head, *frame_info;
  1411. +
  1412. +   fbm = (fbm_t*)h;
  1413. +   if(fbm == NULL)
  1414. +       return ;
  1415. +
  1416. +   frame_info = fbm->display_queue;
  1417. +   display_head = frame_info;
  1418. +   while(frame_info)
  1419. +   {
  1420. +       if(frame_info->picture.pts == pts)
  1421. +       {
  1422. +           if(frame_info == fbm->display_queue) {
  1423. +               fbm->display_queue = frame_info->next;
  1424. +           }
  1425. +           else {
  1426. +               display_head->next = frame_info->next;
  1427. +           }
  1428. +
  1429. +           fbm_enqueue(&fbm->empty_queue, frame_info);
  1430. +           frame_info->status = FS_EMPTY;
  1431. +           frame_info->next = NULL;
  1432. +           break;
  1433. +       }
  1434. +       display_head = frame_info;
  1435. +       frame_info = frame_info->next;
  1436. +   }
  1437. +}
  1438. +
  1439.  vpicture_t* fbm_display_pick_frame(Handle h)
  1440.  {
  1441.      fbm_t*        fbm;
  1442. @@ -893,3 +1356,20 @@
  1443.  }
  1444.  #endif
  1445.  
  1446. +
  1447. +//****************************************************************************//
  1448. +//************************ Instance of FBM Interface *************************//
  1449. +//****************************************************************************//
  1450. +IFBM_t IFBM =
  1451. +{
  1452. +    fbm_release,
  1453. +    fbm_decoder_request_frame,
  1454. +    fbm_decoder_return_frame,
  1455. +    fbm_decoder_share_frame,
  1456. +    fbm_init_ex,
  1457. +    fbm_init_ex_yv12,
  1458. +    fbm_init_yv32,
  1459. +    fbm_flush_frame,
  1460. +    fbm_print_status
  1461. +};
  1462. +
  1463. diff -b -u -r -N '--exclude=.git' linux-armhf/fbm/fbm.h linux-armel_new/fbm/fbm.h
  1464. --- linux-armhf/fbm/fbm.h   2013-06-19 12:18:15.000000000 +0200
  1465. +++ linux-armel_new/fbm/fbm.h   2013-06-19 12:18:14.000000000 +0200
  1466. @@ -54,6 +54,7 @@
  1467.                          u32 size_alpha[],
  1468.                          _3d_mode_e _3d_mode,
  1469.                          pixel_format_e format,
  1470. +                        u8     is_preview_mode,
  1471.                           void* parent);
  1472.  
  1473.      void        fbm_release(Handle h, void* parent);
  1474. @@ -74,7 +75,8 @@
  1475.      s32         fbm_alloc_redBlue_frame_buffer(Handle h);
  1476.      s32         fbm_free_redBlue_frame_buffer(Handle h);
  1477.      s32         fbm_alloc_rotate_frame_buffer(Handle h);
  1478. -
  1479. +    void       fbm_flush_frame(Handle h, s64 pts);
  1480. +    void        fbm_print_status(Handle h);
  1481.  #ifdef __cplusplus
  1482.  }
  1483.  #endif
  1484. diff -b -u -r -N '--exclude=.git' linux-armhf/libcedarv/vdecoder.c linux-armel_new/libcedarv/vdecoder.c
  1485. --- linux-armhf/libcedarv/vdecoder.c    2013-06-19 12:18:15.000000000 +0200
  1486. +++ linux-armel_new/libcedarv/vdecoder.c    2013-06-19 12:18:14.000000000 +0200
  1487. @@ -21,12 +21,6 @@
  1488.  extern s32 cedardev_init(void);
  1489.  extern s32 cedardev_exit(void);
  1490.  
  1491. -
  1492. -extern IVEControl_t gIVE;
  1493. -extern IOS_t        gIOS;
  1494. -extern IFBM_t       gIFBM;
  1495. -extern IVBV_t       gIVBV;
  1496. -
  1497.  //#define SAVE_DATA
  1498.  #ifdef SAVE_DATA
  1499.  static FILE * fpStream = NULL;
  1500. @@ -117,7 +111,6 @@
  1501.     video_decoder_t* decoder;
  1502.      if(p == NULL)
  1503.          return CEDARV_RESULT_ERR_INVALID_PARAM;
  1504. -    Log("xxxxxxxxxxxxxxxxxx");
  1505.      decoder = (video_decoder_t*)p;
  1506.      if(decoder->stream_info.format == STREAM_FORMAT_UNKNOW)
  1507.          return CEDARV_RESULT_ERR_UNSUPPORTED;
  1508. @@ -137,12 +130,6 @@
  1509.          return CEDARV_RESULT_ERR_NO_MEMORY;
  1510.      }
  1511.  
  1512. -    //* set method pointers first.
  1513. -    libve_set_ive(&gIVE);
  1514. -    libve_set_ios(&gIOS);
  1515. -    libve_set_ifbm(&gIFBM);
  1516. -    libve_set_ivbv(&gIVBV);
  1517. -
  1518.      decoder->ve = libve_open(&decoder->config_info, &decoder->stream_info, (void*)decoder);
  1519.      if(decoder->ve == NULL)
  1520.      {
  1521. @@ -729,13 +716,8 @@
  1522.      picture->pcr                    = frame->pcr;
  1523.  
  1524.     //* the CedarX player need we return physic address of display frame.
  1525. -#if 0
  1526.      picture->y                      = (unsigned char*)mem_get_phy_addr((unsigned int)frame->y);
  1527.      picture->u                      = (unsigned char*)mem_get_phy_addr((unsigned int)frame->u);
  1528. -#else
  1529. -    picture->y                      = (unsigned char*)frame->y;
  1530. -    picture->u                      = (unsigned char*)frame->u;
  1531. -#endif
  1532.  
  1533.      picture->v                      = NULL;
  1534.      picture->alpha                  = NULL;
  1535. Binärdateien linux-armhf/libvecore/libcedarxalloc.so and linux-armel_new/libvecore/libcedarxalloc.so sind verschieden.
  1536. diff -b -u -r -N '--exclude=.git' linux-armhf/libvecore/libve_adapter.h linux-armel_new/libvecore/libve_adapter.h
  1537. --- linux-armhf/libvecore/libve_adapter.h   2013-06-19 12:18:15.000000000 +0200
  1538. +++ linux-armel_new/libvecore/libve_adapter.h   2013-06-19 12:18:14.000000000 +0200
  1539. @@ -110,6 +110,12 @@
  1540.      }IVBV_t;
  1541.  
  1542.  
  1543. +    extern IVEControl_t IVE;
  1544. +    extern IOS_t        IOS;
  1545. +    extern IFBM_t       IFBM;
  1546. +    extern IVBV_t       IVBV;
  1547. +
  1548. +
  1549.  #ifdef __cplusplus
  1550.  }
  1551.  #endif
  1552. Binärdateien linux-armhf/libvecore/libve_base.so and linux-armel_new/libvecore/libve_base.so sind verschieden.
  1553. Binärdateien linux-armhf/libvecore/libvecore.so and linux-armel_new/libvecore/libvecore.so sind verschieden.
  1554. diff -b -u -r -N '--exclude=.git' linux-armhf/libvecore/libve.h linux-armel_new/libvecore/libve.h
  1555. --- linux-armhf/libvecore/libve.h   2013-06-19 12:18:15.000000000 +0200
  1556. +++ linux-armel_new/libvecore/libve.h   2013-06-19 12:18:14.000000000 +0200
  1557. @@ -128,14 +128,6 @@
  1558.  
  1559.      u8*       libve_get_last_error(Handle libve);    //* get a text description of last happened error;
  1560.  
  1561. -    vresult_e libve_set_ive(IVEControl_t* ive);
  1562. -
  1563. -    vresult_e libve_set_ios(IOS_t* ios);
  1564. -
  1565. -    vresult_e libve_set_ifbm(IFBM_t* ifbm);
  1566. -
  1567. -    vresult_e libve_set_ivbv(IVBV_t* ivbv);
  1568. -
  1569.  #ifdef __cplusplus
  1570.  }
  1571.  #endif
  1572. diff -b -u -r -N '--exclude=.git' linux-armhf/libve_types.h linux-armel_new/libve_types.h
  1573. --- linux-armhf/libve_types.h   1970-01-01 01:00:00.000000000 +0100
  1574. +++ linux-armel_new/libve_types.h   2013-06-19 12:18:14.000000000 +0200
  1575. @@ -0,0 +1,14 @@
  1576. +#ifndef _LIBVE_TYPES_H
  1577. +#define _LIBVE_TYPES_H
  1578. +
  1579. +typedef unsigned char __u8;
  1580. +typedef signed char __s8;
  1581. +typedef unsigned short __u16;
  1582. +typedef short __s16;
  1583. +typedef unsigned int __u32;
  1584. +typedef int __s32;
  1585. +typedef unsigned long long __u64;
  1586. +typedef signed long long __s64;
  1587. +typedef char __bool;
  1588. +
  1589. +#endif /* _LIBVE_TYPES_H */
  1590. Binärdateien linux-armhf/sample/data/h264.buf and linux-armel_new/sample/data/h264.buf sind verschieden.
  1591. Binärdateien linux-armhf/sample/data/h264.buf-old and linux-armel_new/sample/data/h264.buf-old sind verschieden.
  1592. Binärdateien linux-armhf/sample/data/h264.buf-old2 and linux-armel_new/sample/data/h264.buf-old2 sind verschieden.
  1593. Binärdateien linux-armhf/sample/doc/decoder demo.pdf and linux-armel_new/sample/doc/decoder demo.pdf sind verschieden.
  1594. Binärdateien linux-armhf/sample/doc/init data设置指导.doc and linux-armel_new/sample/doc/init data设置指导.doc sind verschieden.
  1595. Binärdateien linux-armhf/sample/doc/PMP file format.pdf and linux-armel_new/sample/doc/PMP file format.pdf sind verschieden.
  1596. diff -b -u -r -N '--exclude=.git' linux-armhf/vbv/vbv.c linux-armel_new/vbv/vbv.c
  1597. --- linux-armhf/vbv/vbv.c   2013-06-19 12:18:15.000000000 +0200
  1598. +++ linux-armel_new/vbv/vbv.c   2013-06-19 12:18:14.000000000 +0200
  1599. @@ -1,4 +1,5 @@
  1600.  
  1601. +#include "commom_type.h"
  1602.  #include "vbv.h"
  1603.  
  1604.  #define __msg(msg...) {printf("%s:%d   ", __FILE__, __LINE__); printf(msg); printf("\n");}
  1605. @@ -40,6 +41,7 @@
  1606.      stream_fifo_t   frame_fifo;
  1607.      stream_queue_t  frame_queue;
  1608.  
  1609. +    free_buffer_sem_cb free_buffer_sem;
  1610.      void*          parent;
  1611.  }vbv_t;
  1612.  
  1613. @@ -58,9 +60,11 @@
  1614.  
  1615.      if(vbv_size == 0 || max_frame_num == 0)
  1616.          return NULL;
  1617. +    
  1618.      vbv_buf = (u8*)mem_palloc(vbv_size, 1024);
  1619.      if (vbv_buf == NULL)
  1620.          return NULL;
  1621. +
  1622.      vbv = (vbv_t*)mem_alloc(sizeof(vbv_t));
  1623.      if (vbv == NULL)
  1624.      {
  1625. @@ -91,6 +95,7 @@
  1626.          mem_pfree(vbv_buf);
  1627.          return NULL;
  1628.      }
  1629. +
  1630.      vbv->vbv_buf     = vbv_buf;
  1631.      vbv->max_size    = vbv_size;
  1632.      vbv->vbv_buf_end = vbv_buf + vbv_size - 1;
  1633. @@ -219,7 +224,10 @@
  1634.          unlock(v);
  1635.          return -1;
  1636.      }
  1637. -
  1638. +    if(stream->valid == 0)
  1639. +    {  
  1640. +        stream->valid = 1;
  1641. +    }
  1642.      write_index = v->frame_fifo.write_index;
  1643.      mem_cpy(&v->frame_fifo.in_frames[write_index].vstream, stream, sizeof(vstream_data_t));
  1644.      enqueue_to_tail(&v->frame_fifo.in_frames[write_index], &v->frame_queue);     //* add this frame to the queue tail.
  1645. @@ -316,6 +324,39 @@
  1646.      return;
  1647.  }
  1648.  
  1649. +void vbv_set_free_vbs_sem_cb(free_buffer_sem_cb cb, Handle vbv)
  1650. +{
  1651. +    vbv_t* v = (vbv_t*)vbv;
  1652. +
  1653. +    if (v != NULL)
  1654. +    {
  1655. +       v->free_buffer_sem = cb;
  1656. +    }
  1657. +
  1658. +    return;
  1659. +}
  1660. +
  1661. +void vbv_free_vbs_sem(Handle vbv)
  1662. +{
  1663. +    vbv_t* v;
  1664. +
  1665. +    v = (vbv_t*)vbv;
  1666. +
  1667. +    if (v == NULL)
  1668. +    {
  1669. +        return;
  1670. +    }
  1671. +
  1672. +    if (lock(v) != 0)
  1673. +    {
  1674. +        return;
  1675. +    }
  1676. +    if(v->free_buffer_sem && v->parent)
  1677. +    {
  1678. +       v->free_buffer_sem(v->parent);
  1679. +    }
  1680. +    unlock(v);
  1681. +}
  1682.  
  1683.  void vbv_flush_stream_frame(vstream_data_t* stream, Handle vbv)
  1684.  {
  1685. @@ -574,3 +615,24 @@
  1686.  }
  1687.  
  1688.  
  1689. +static void flush_stream_frame(vstream_data_t* stream, Handle vbv)
  1690. +{
  1691. +    vbv_flush_stream_frame(stream, vbv);
  1692. +    vbv_free_vbs_sem(vbv);
  1693. +
  1694. +}
  1695. +
  1696. +
  1697. +//****************************************************************************//
  1698. +//************************ Instance of VBV Interface *************************//
  1699. +//****************************************************************************//
  1700. +
  1701. +IVBV_t IVBV =
  1702. +{
  1703. +    vbv_request_stream_frame,
  1704. +    vbv_return_stream_frame,
  1705. +    flush_stream_frame,
  1706. +    vbv_get_base_addr,
  1707. +    vbv_get_buffer_size
  1708. +};
  1709. +
  1710. diff -b -u -r -N '--exclude=.git' linux-armhf/vbv/vbv.h linux-armel_new/vbv/vbv.h
  1711. --- linux-armhf/vbv/vbv.h   2013-06-19 12:18:15.000000000 +0200
  1712. +++ linux-armel_new/vbv/vbv.h   2013-06-19 12:18:14.000000000 +0200
  1713. @@ -9,6 +9,8 @@
  1714.  extern "C" {
  1715.  #endif
  1716.  
  1717. +   typedef void (*free_buffer_sem_cb)(void* handle);
  1718. +
  1719.      Handle vbv_init(u32 vbv_size, u32 max_frame_num);
  1720.  
  1721.      void   vbv_release(Handle vbv);
  1722. @@ -43,6 +45,10 @@
  1723.  
  1724.      void*  vbv_get_parent(Handle vbv);
  1725.  
  1726. +    void vbv_free_vbs_sem(Handle vbv);
  1727. +
  1728. +    void vbv_set_free_vbs_sem_cb(free_buffer_sem_cb cb, Handle vbv);
  1729. +
  1730.  #ifdef __cplusplus
  1731.  }
  1732.  #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement