00001 #include "funcprotos.h"
00002 #include "quicktime.h"
00003 #include <string.h>
00004
00005
00006 void quicktime_delete_avcc(quicktime_avcc_t *avcc)
00007 {
00008 if(avcc->data) free(avcc->data);
00009 }
00010
00011
00012 void quicktime_set_avcc_header(quicktime_avcc_t *avcc,
00013 unsigned char *data,
00014 int size)
00015 {
00016 if(avcc->data)
00017 {
00018 free(avcc->data);
00019 }
00020
00021 avcc->data = calloc(1, size);
00022 memcpy(avcc->data, data, size);
00023 avcc->data_size = size;
00024 }
00025
00026 void quicktime_write_avcc(quicktime_t *file,
00027 quicktime_avcc_t *avcc)
00028 {
00029 quicktime_atom_t atom;
00030 quicktime_atom_write_header(file, &atom, "avcC");
00031 quicktime_write_data(file, avcc->data, avcc->data_size);
00032 quicktime_atom_write_footer(file, &atom);
00033 }
00034
00035
00036
00037 int quicktime_read_avcc(quicktime_t *file,
00038 quicktime_atom_t *parent_atom,
00039 quicktime_avcc_t *avcc)
00040 {
00041 avcc->data_size = parent_atom->size - 8;
00042 avcc->data = calloc(1, avcc->data_size + 1024);
00043 quicktime_read_data(file,
00044 avcc->data,
00045 avcc->data_size);
00046 quicktime_atom_skip(file, parent_atom);
00047 return 0;
00048 }
00049
00050 void quicktime_avcc_dump(quicktime_avcc_t *avcc)
00051 {
00052 int i;
00053 printf(" h264 description\n");
00054 printf(" data_size=0x%x\n", avcc->data_size);
00055 printf(" data=");
00056 for(i = 0; i < avcc->data_size; i++)
00057 {
00058 printf("0x%02x ", (unsigned char)avcc->data[i]);
00059 }
00060 printf("\n");
00061 }