Sync with tizen_2.4
[platform/core/api/mediacodec.git] / src / media_codec_util.c
1 #include <media_codec_util.h>
2
3 void *mc_aligned_malloc(int size, int alignment)
4 {
5     unsigned char *pMem;
6     unsigned char *tmp;
7
8     if((tmp = (unsigned char *)malloc(size + alignment)) != NULL)
9     {
10         pMem = (unsigned char*)((unsigned int)(tmp + alignment - 1) & (~(unsigned int)(alignment -1)));
11
12         if(pMem == tmp)
13             pMem += alignment;
14
15         *(pMem - 1) = (unsigned int)(pMem - tmp);
16
17         return ((void*) pMem);
18     }
19     return NULL;
20 }
21
22 void mc_aligned_free(void *mem)
23 {
24     unsigned char *ptr;
25
26     if(mem == NULL)
27         return;
28
29     ptr = mem;
30     ptr -= *(ptr-1);
31
32     free(ptr);
33 }
34
35 mc_sem_t *mc_sem_new()
36 {
37     mc_sem_t *sem;
38     sem = g_new(mc_sem_t, 1);
39     //sem->cond = g_cond_new();
40     g_cond_init(&sem->cond);
41     //sem->mutex = g_mutex_new();
42     g_mutex_init(&sem->mutex);
43     sem->counter = 0;
44
45     return sem;
46 }
47
48 void mc_sem_free(mc_sem_t *sem)
49 {
50     //g_cond_free(sem->cond);
51     g_cond_clear(&sem->cond);
52     //g_mutex_free(sem->mutex);
53     g_mutex_clear(&sem->mutex);
54     g_free(sem);
55 }
56
57 void mc_sem_down(mc_sem_t *sem)
58 {
59     g_mutex_lock(&sem->mutex);
60
61     while(sem->counter == 0)
62         g_cond_wait(&sem->cond, &sem->mutex);
63     sem->counter--;
64
65     g_mutex_unlock(&sem->mutex);
66 }
67
68 void mc_sem_up(mc_sem_t *sem)
69 {
70     g_mutex_lock(&sem->mutex);
71
72     sem->counter++;
73     g_cond_signal(&sem->cond);
74
75     g_mutex_unlock(&sem->mutex);
76
77 }
78
79 void mc_hex_dump(char *desc, void *addr, int len)
80 {
81     int i;
82     unsigned char buff[17];
83     unsigned char *pc = (unsigned char*)addr;
84
85     if (desc != NULL)
86         printf("%s:\n", desc);
87
88     for (i = 0; i < len; i++)
89     {
90
91         if ((i % 16) == 0)
92         {
93             if (i != 0)
94                 printf("  %s\n", buff);
95
96             printf("  %04x ", i);
97         }
98
99         printf(" %02x", pc[i]);
100
101         if ((pc[i] < 0x20) || (pc[i] > 0x7e))
102             buff[i % 16] = '.';
103         else
104             buff[i % 16] = pc[i];
105         buff[(i % 16) + 1] = '\0';
106     }
107
108     while ((i % 16) != 0) {
109         printf("   ");
110         i++;
111     }
112     printf("  %s\n", buff);
113 }