MediaCacheSrv.h
26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* MediaCacheSrv.h
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* ImageViewer Ex Srv header file
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef _MEDIACACHE_SRV_H_
#define _MEDIACACHE_SRV_H_
#include "MMI_features.h"
#if defined(__MMI_SRV_MEDIACACHE__)
#include "gdi_const.h"
#include "gdi_include.h"
#include "lcd_sw_inc.h"
#include "MMIDataType.h"
#include "MediaCacheSrvGprot.h"
#include "gdi_datatype.h"
#include "FileMgrSrvGProt.h"
#include "kal_general_types.h"
#if defined(__SQLITE3_SUPPORT__)
#include "sqlite3.h"
#include "sqlite3ex.h"
#include "MediaCacheDaemonGprot.h"
#endif
#ifdef __SCALADO_SUPPORT__
#include "ImgEdtSrvGprot.h"
#endif
/*************************************************
*
* IVSRV Configure part
*
*************************************************/
#define SRV_MEDIACACHE_INSTANCE_NUM (3) /* service instance number */
#define SRV_MEDIACACHE_LARGE_IMG_RATE (3) /* W_LI = W_L1 x 3, H_LI = H_L1 x 3 */
#define SRV_MEDIACACHE_LEVEL2_IMG_DIV (2)
#define SRV_MEDIACACHE_CACHE_NUM (25) /* number of cache handles */
#define SRV_MEDIACACHE_DB_IMG_EXPIRE_DAYS (60) /* days that record will exist at db */
#define SRV_MEDIACACHE_GDI_WIDTH_LIMITATION (2048)
#define SRV_MEDIACACHE_LARGE_COLOR_FORMAT (GDI_COLOR_FORMAT_MAINLCD)
#define SRV_MEDIACACHE_LEVEL1_COLOR_FORMAT (GDI_COLOR_FORMAT_MAINLCD)
#define SRV_MEDIACACHE_LEVEL2_COLOR_FORMAT (GDI_COLOR_FORMAT_MAINLCD)
#define SRV_MEDIACACHE_DIRECT_DECODE_L1_SIZE (1200*900) /*if image dimension less the it will decode L1 directly*/
/*************************************************
*
* IVSRV DEFINED DATA
*
*************************************************/
#define SRV_MEDIACACHE_LARGE_IMG_RATE_POW2 (SRV_MEDIACACHE_LARGE_IMG_RATE * SRV_MEDIACACHE_LARGE_IMG_RATE) /* LI = L1 x 9 */
#define SRV_MEDIACACHE_LEVEL2_IMG_DIV_POW2 (SRV_MEDIACACHE_LEVEL2_IMG_DIV * SRV_MEDIACACHE_LEVEL2_IMG_DIV) /* L2 = L1 / 4 */
#define SRV_MEDIACACHE_RESUME_TIME_GAP_NORMAL (1)
#define SRV_MEDIACACHE_SAVE2DB_TIME_GAP_NORMAL (100)
#define SRV_MEDIACACHE_DECODE_TIME_GAP_NORMAL (1)
#define SRV_MEDIACACHE_DECODE_TIME_GAP_SHORT (1)
#define SRV_MEDIACACHE_DECODE_SCALE (1000)
#define SRV_MEDIACACHE_DECODE_MAX_SCALE (2046 * 4)
#define SRV_MEDIACACHE_MIN_IMG_SIZE_W (40)
#define SRV_MEDIACACHE_MIN_IMG_SIZE_H (40)
#define SRV_MEDIACACHE_BYTES_PER_PIXEL (GDI_MAINLCD_BIT_PER_PIXEL / 8)
#define SRV_MEDIACACHE_DUMMY_FILE_IDX (-1)
#define SRV_MEDIACACHE_DB_GET_IMG_START_ERR (-1)
#define SRV_MEDIACACHE_DECODE_MAX_W_H (LCD_WIDTH * LCD_HEIGHT / 4)
#define SRV_MEDIACACHE_LCD_BUF_LENGTH (LCD_WIDTH * LCD_HEIGHT * SRV_MEDIACACHE_BYTES_PER_PIXEL)
#define SRV_MEDIACACHE_ONE_SMALL_BUF_LENGTH (SRV_MEDIACACHE_LCD_BUF_LENGTH/4)
#define SRV_MEDIACACHE_BUF_ADD_TIMES_MAX (50)
#define SRV_MEDIACACHE_DB_QUERY_BLOCK_SIZE (5)
#define SRV_MEDIACACHE_KEY_CODE_SIZE (20)
#define SRV_MEDIACACHE_KEY_CODE_ROUND (20)
/*************************************************
*
* IVSRV ASSERT INFO
*
*************************************************/
#define CACHE_TYPE_ERR (0)
#define CACHE_METHOD_ERR (0)
#define SRV_MEDIACACHE_CONFIG_WORK_MODE_ERR (0)
/*************************************************
*
* IVSRV context structure
*
*************************************************/
typedef enum
{
SRV_MEDIACACHE_STATE_UNINITED = 0,
SRV_MEDIACACHE_STATE_INITED,
SRV_MEDIACACHE_STATE_RUNNING,
SRV_MEDIACACHE_STATE_PAUSED,
SRV_MEDIACACHE_STATE_END
} srv_mediacache_state_enum;
typedef enum
{
SRV_MEDIACACHE_INTERNAL_ERR_SEARCHING_SAME_ONE = -17000,
SRV_MEDIACACHE_INTERNAL_ERR_END
} srv_mediacache_internal_err_code_enum;
typedef enum
{
SRV_MEDIACACHE_CACHE_STATE_EMPTY = 0,
SRV_MEDIACACHE_CACHE_STATE_RESIZE_FROM_L1,
SRV_MEDIACACHE_CACHE_STATE_RESIZE_FROM_L2,
SRV_MEDIACACHE_CACHE_STATE_DECODING,
SRV_MEDIACACHE_CACHE_STATE_DECODE_OK,
SRV_MEDIACACHE_CACHE_STATE_DECODE_ERR,
SRV_MEDIACACHE_CACHE_STATE_DECODE_DB_NEED_CHECK,
SRV_MEDIACACHE_CACHE_STATE_DECODE_DB_SKIP,
SRV_MEDIACACHE_CACHE_STATE_DECODE_DB_OK,
SRV_MEDIACACHE_CACHE_STATE_END
} srv_mediacache_cache_state_enum;
typedef enum
{
SRV_MEDIACACHE_RESIZE_QULITY_DEFAULT = 0,
SRV_MEDIACACHE_RESIZE_QULITY_HIGH,
SRV_MEDIACACHE_RESIZE_QULITY_FAST, // low qulity but fast
SRV_MEDIACACHE_RESIZE_QULITY_END
} srv_mediacache_resize_qulity_enum;
/*The enum of is cancel predecode*/
typedef enum
{
SRV_MEDIACACHE_DATA_FORMAT_JPEG = 0,
SRV_MEDIACACHE_DATA_FORMAT_BITMAP,
SRV_MEDIACACHE_DATA_FORMAT_END
} srv_mediacache_data_format_enum;
typedef enum
{
SRV_MEDIACACHE_WORKMODE_FILENAME,
SRV_MEDIACACHE_WORKMODE_FILELIST,
SRV_MEDIACACHE_WORKMODE_IDARRAY,
SRV_MEDIACACHE_WORKMODE_END
} srv_mediacache_work_mode_enum;
typedef enum
{
SRV_MEDIACACHE_META_STATE_IDLE = 0,
SRV_MEDIACACHE_META_STATE_GETTING_FROM_DB = 0x10,
SRV_MEDIACACHE_META_STATE_GETTING_FROM_IES = 0x11,
SRV_MEDIACACHE_META_STATE_FINISHED = 0x20,
SRV_MEDIACACHE_META_STATE_FINISHED_BUT_ERROR = 0x21,
SRV_MEDIACACHE_META_STATE_END
} srv_mediacache_meta_state_enum;
typedef struct srv_mediacache_cell
{
struct srv_mediacache_cell *prev; /* previous cell */
struct srv_mediacache_cell *next; /* next cell */
U8 *buffer; /* image content buffer */
S32 file_index; /* cell index */
S32 image_width; /* image width in buffer */
S32 image_height; /* image height in buffer */
S32 org_image_width; /* original image width */
S32 org_image_height; /* original image height */
S32 err_code; /* error code if has */
U16 image_type; /* JPG? BMP ? */
U8 err_group; /* error group if has */
U8 type; /* cell is from L1? L2? large? */
U8 state; /* decoding? emptr? decode error? */
U8 state_4_db; /* need save to DB? */
MMI_BOOL is_lock; /* the cell image content buffer is used by app ?*/
MMI_BOOL is_saved; /* is saved to DB or not */
#ifdef __SRV_MEDIACACHE_DEBUG_MEASURE__
U32 decode_ticks; /* cell decode time */
U32 db_ticks; /* data base decode time */
#endif
#ifdef __MMI_MEDIA_CACHE_YUV_THUMB__
gdi_color_format buffer_format; /* cell buffer format can be different from cache format */
#endif
#ifdef __SCALADO_SUPPORT__
srv_ies_image_handle ies_image_handle; /* handle for draw image */
srv_ies_preview_handle ies_preview_handle; /* handle for zoom and move */
gdi_handle ies_preview_gdi_layer; /* you decode cell using to this layer, for speed scalado */
srv_ies_job_handle ies_meta_job_handle; /* ies meta job handle */
srv_ies_meta_handle ies_meta_handle; /* handle of meta */
//PU8 ies_meta_buffer; /* meta buffer */
//S32 ies_meta_buffer_size; /* meta buffer size */
MMI_BOOL is_ies_meta_saved; /* meta saved to DB or not*/
S32 ies_meta_state; /* meta state*/
#endif
} srv_mediacache_cell_struct;
typedef struct
{
srv_mediacache_cell_struct *curr_p; /* currently not used */
srv_mediacache_data_cb app_data_cb;
gdi_handle image_hdl_decoding;
U32 total_length;
U32 buf_length;
U32 small_buf_length;
gdi_handle layer;
} srv_mediacache_filename_struct;
typedef struct
{
S32 count;
U16 *idarray_p;
} srv_mediacache_idarray_struct;
typedef struct
{
srv_mediacache_cell_struct *level1_cache_block_p;
srv_mediacache_cell_struct *level2_cache_block_p;
srv_mediacache_cell_struct *large_img_cacheblock_p;
S32 file_count;
U8 num_level1_next;
U8 num_level1_prev;
U8 num_level2_prev;
U8 num_level2_next;
U8 num_level1_used;
U8 num_level2_used;
MMI_BOOL has_large;
} srv_mediacache_filelist_struct;
typedef struct
{
S32 level1_width; /* L1 cache width */
S32 level1_height; /* L1 cache height */
gdi_color_format level1_cf; /* color format */
S32 level2_width; /* L2 cache width */
S32 level2_height; /* L2 cache height */
gdi_color_format level2_cf; /* color format */
void *run_buf; /*run buffer will store srv cntx*/
U32 run_buf_length; /*use xxx * num to get run buffer length*/
void *db_buf; /*has macro defination of min and recommend*/
U32 db_buf_length;
gdi_color bg_color; /*back color for decode transparent image*/
gdi_color_format large_cf; /*large buffer color format */
SRV_FMGR_FILELIST_HANDLE flist_handle; /* filelist handle */
CHAR filename[SRV_FMGR_PATH_BUFFER_SIZE]; /* filename */
srv_mediacache_data_format_enum data_format; /* data format */ /* currently not used */
} srv_mediacache_config_struct;
typedef void (*srv_mediacache_decode_nb_cb)(GDI_RESULT result,gdi_handle handle);
/*****************************************************************************
* <GROUP CallBackFunctions>
*
* FUNCTION
* srv_mediacache_decode_get_filename_by_index
* DESCRIPTION
* get image data callback handler, called when get image finished.
* PARAMETERS
* err_group : [IN] the group of error.
* err_code : [IN] the error code.
* user_data : [IN] user data.
* RETURNS
* None.
*****************************************************************************/
typedef void (*srv_mediacache_nb_decode_callback)(S32 result, srv_mediacache_err_group_enum group, void *user_data);
/*****************************************************************************
* <GROUP CallBackFunctions>
*
* FUNCTION
* srv_mediacache_decode_get_filename_by_index
* DESCRIPTION
* get image data callback handler, called when get image finished.
* PARAMETERS
* err_group : [IN] the group of error.
* err_code : [IN] the error code.
* user_data : [IN] user data.
* RETURNS
* None.
*****************************************************************************/
typedef MMI_BOOL (*srv_mediacache_nb_decode)(U32 *handle, srv_mediacache_cell_struct *cell_p, srv_mediacache_nb_decode_callback done_callback, void *user_data);
/*****************************************************************************
* <GROUP CallBackFunctions>
*
* FUNCTION
* srv_mediacache_decode_get_filename_by_index
* DESCRIPTION
* get image data callback handler, called when get image finished.
* PARAMETERS
* err_group : [IN] the group of error.
* err_code : [IN] the error code.
* user_data : [IN] user data.
* RETURNS
* None.
*****************************************************************************/
typedef GDI_RESULT (*srv_mediacache_blocking_decode)(srv_mediacache_cell_struct *cell_p);
/*****************************************************************************
* <GROUP CallBackFunctions>
*
* FUNCTION
* srv_mediacache_decode_get_filename_by_index
* DESCRIPTION
* get image data callback handler, called when get image finished.
* PARAMETERS
* err_group : [IN] the group of error.
* err_code : [IN] the error code.
* user_data : [IN] user data.
* RETURNS
* None.
*****************************************************************************/
typedef MMI_BOOL (*srv_mediacache_nb_decode_cancel)(U32 handle);
typedef struct
{
srv_mediacache_get_filename_cb get_file_name; /* get file name funciton */
srv_mediacache_blocking_decode decode_cell_blocking; /* blocking decode cell function */
srv_mediacache_nb_decode decode_cell; /* none blocking decode cell function */
srv_mediacache_nb_decode_cancel cancel_decode_cell; /* cancel none blocking decode cell function */
srv_mediacache_nb_decode search_cell; /* search cell function */ /*currently not use*/
srv_mediacache_nb_decode_cancel cancel_search_cell; /* cancel search cell function */ /*currently not use*/
srv_mediacache_engine_clip set_clip; /* set clip function */
U32* user_data; /* user data */
} srv_mediacache_eng_callbacks_struct;
typedef struct
{
void *buffer; /* cell image content buffer */
U32 length; /* cell image content length */
} srv_mediacache_buffers_struct;
typedef struct
{
PU8 buffer;
S32 buffer_size;
MMI_BOOL is_used;
} srv_mediacache_meta_struct;
typedef struct
{
srv_handle medialib_mark; /* magic number, as condition of valid or not */
U32 medialib_mark_buf_length; /* running buffer length */
srv_mediacache_config_struct config; /* settings for you config */
U8* cache_block_start; /* cache block start addr */
U8* cache_block_current; /* current cache block addr */
U8* cache_block_end; /* cache block end addr */
S32 canvas_height; /* currently not use */
S32 last_err_grp; /* last error group */
S32 last_err_code; /* last error code */
U32 large_buffer_size; /* large buffer size */
U32 level1_buffer_size; /* L1 buffer size */
U32 level2_buffer_size; /* L2 buffer size */
U32 userdef_db_io_buffer_length; /* The buffer length you save to db */ /* curently not use */
gdi_handle layer; /* gdi nb decode handle */
srv_mediacache_cell_struct *large_p; /* large cell ptr */
srv_mediacache_cell_struct *level1_curr_p; /* level1 curr cell ptr */
srv_mediacache_cell_struct *level2_curr_p; /* level2 curr cell ptr */
srv_mediacache_cell_struct *level1_first_p; /* level1 frist cell ptr */
srv_mediacache_cell_struct *level2_first_p; /* level2 first cell ptr */
srv_mediacache_cell_struct *level1_free_p; /* level1 free cell ptr */
srv_mediacache_cell_struct *level2_free_p; /* level2 free cell ptr */
srv_mediacache_cell_struct *locked_cell_p; /* locked cell ptr */
srv_mediacache_data_cb app_data_cb; /* nb decode cell callback */
S32 cb_file_idx; /* callback file index */
void *user_data; /* user data */
srv_mediacache_pre_decode_cb pre_decode_cb; /* pre decode callback */
#if defined(__SQLITE3_SUPPORT__)
ivd_db_handle_struct db_handle; /* db handle */
MMI_BOOL is_db_start_ok; /* is db started */
MMI_BOOL is_clear_done; /* is all cell saved to db */
#endif
U8 db_store_cache_group; /* you hope save L1 or L2 cache to db */
U32 db_failed_query_count; /* db fails how many times */
U8 state; /* media cache state */
U8 color_format; /* gdi decode layer color format */
U8 bytes_per_pixel; /* bytes per pixel */
MMI_BOOL is_srv_clear_bg; /* need srv to clear the bg before draw */
MMI_BOOL is_srv_first_start; /* is cache first started */
MMI_BOOL is_can_saving; /* can save to db or not */ /*currently not use*/
MMI_BOOL is_waiting_resume; /* is waiting resume */
MMI_BOOL is_blocking_get_first; /* is blocking get first */
MMI_BOOL is_align_cache; /* MMI_TRUE will align cell buffer ptr and size to 32 bytes */
U8 backup_state; /* if resume with delay, will record the dest state */
gdi_color bg_color; /* image draw layer background color */
U32 start_ticks; /* time check */
U32 end_ticks; /* time check */
U8 decode_method; /* how to find next cell */
srv_mediacache_err_enum last_source; /* the last image is from L1, L2 or large */
srv_mediacache_cell_struct *decoding_p; /* decoding cell ptr */
srv_mediacache_cell_struct *searching_p; /* the cell your search in db */
gdi_handle image_hdl_decoding; /* gdi nb decode handle */
#ifdef __SCALADO_SUPPORT__
srv_ies_job_handle ies_decoding_handle; /* ies decoding handle */
srv_ies_app_session_handle ies_app_session; /* ies job handle */
#endif
srv_mediacache_resize_qulity_enum qulity; /* resize qty */
MMI_BOOL prev_first; /* is search prev first */
srv_mediacache_work_mode_enum work_mode;
union
{
srv_mediacache_filelist_struct filelist;
srv_mediacache_filename_struct filename;
srv_mediacache_idarray_struct idarray;
} mode_cntx;
srv_mediacache_eng_callbacks_struct engine; /* decode engine */
srv_mediacache_events_cb events_callback; /* if happend some event, will callback */
srv_mediacache_evt_get_filename_err_struct events_getfilename_err; /* get file name but error */
void * events_callback_user_data; /* user data */
srv_mediacache_buffers_struct buffers[SRV_MEDIACACHE_BUF_ADD_TIMES_MAX]; /* cell content buffer */
MMI_BOOL is_schedule_timer_started; /* is schedule timer started */
U32 db_save_count; /* how many count you have saved to db */
U32 db_save_decode_count; /* if decode ok, remerber this */
MMI_BOOL db_save_is_timer_start; /* start timer to save image content to db */
gdi_handle large_image_dec_hdlr; /* gdi decode handle for large */ /* only used for trace */
MMI_BOOL is_using_ies; /* using scalado to decode */
MMI_BOOL is_using_meta; /* using meta or not */
MMI_BOOL is_meta_using_db; /* using db to save and read meta */
MMI_BOOL is_put_meta_urgent; /* put meta in high priority */
PS8 ies_render_buffer; /* use this buffer, to avoid IES writing ,but mmi get buffer */
srv_mediacache_cell_struct *ies_meta_p; /* pointer of meta cell creating */
PS8 ies_app_working_buf; /* pointer to APP-provided IES working buffer. If NULL, use MED */
U32 ies_app_working_buf_size; /* size of APP-provided IES working buffer */
} srv_mediacache_cntx_struct;
typedef struct
{
SRV_FMGR_FILELIST_HANDLE flist_handle; /* used for file list mode */
S32 file_count; /* file count */
gdi_handle image_hdl_decoding; /* same with context decode handle */
S32 width; /* L2 size width */
S32 height; /* L2 size height */
MMI_BOOL is_to_buffer; /* is clip head or not */
MMI_BOOL is_lock_level2_only; /* only lock l2 or not */
MMI_BOOL is_use_gdi;
} srv_mediacache_engine_cntx_struct;
/*****************************************************************************
* FUNCTION
* srv_mediacache_remove_cache
* DESCRIPTION
* remove a cache from IVSRV
* PARAMETERS
* *buffer [IN] buffer pointer
* RETURNS
* error code
*****************************************************************************/
typedef MMI_BOOL (*srv_mediacache_cache_finish_check_func)(srv_mediacache_cell_struct* cell_p, void *user_data);
extern U32 srv_mediacache_cache_get_img_size_by_type(U8 cahce_type);
extern MMI_BOOL srv_mediacache_cache_cell_finished(srv_mediacache_cell_struct *cell);
extern void srv_mediacache_cache_reset_cell(srv_mediacache_cell_struct *cell, MMI_BOOL include_buffer);
extern void srv_mediacache_decode_schedule(void);
extern srv_mediacache_pre_decode_enum srv_mediacache_decode_default_pre_cb(const WCHAR *filename, void *user_data);
extern void srv_mediacache_cache_fill_cell_by_img(S32 img_width, S32 img_height,srv_mediacache_cell_struct *cache_cell);
#if defined(__SRV_MEDIACACHE_DB_SUPPORT__)
static MMI_BOOL srv_mediacache_db_cancel_get_img(ivd_db_handle_struct *db_handle);
#endif
static void srv_mediacache_cache_fill_index_to_link(srv_mediacache_cell_struct *curr_p, S32 curr_index, S32 file_count);
static void srv_mediacache_cache_index_print_dbgtrace(void);
static void srv_mediacache_save_to_db_schedule(void);
static void srv_mediacache_save_to_db_callback(S32 err, void *user_data);
static void srv_mediacache_resume_decode_with_delay(srv_mediacache_cntx_struct* handle);
static S32 srv_mediacache_get_img_to_layer_internal(srv_handle handle, U32 index, srv_mediacache_img_to_layer_struct *area, MMI_BOOL is_blocking);
#endif /* __MMI_SRV_MEDIACACHE__ */
#endif /* _MEDIACACHE_SRV_H_ */