Mercurial > libavcodec.hg
comparison avcodec.c @ 1059:890b9fb44e84 libavcodec
* still unfinished code for Options
* demo code - awating more comments
| author | kabi |
|---|---|
| date | Mon, 10 Feb 2003 09:40:23 +0000 |
| parents | c01c98206ee6 |
| children | 1e39f273ecd6 |
comparison
equal
deleted
inserted
replaced
| 1058:3c3da6edc9a1 | 1059:890b9fb44e84 |
|---|---|
| 48 } | 48 } |
| 49 | 49 |
| 50 return NULL; | 50 return NULL; |
| 51 } | 51 } |
| 52 | 52 |
| 53 static private_handle_t* create_handle() | 53 static private_handle_t* create_handle(void) |
| 54 { | 54 { |
| 55 private_handle_t* t = malloc(sizeof(private_handle_t)); | 55 private_handle_t* t = av_malloc(sizeof(private_handle_t)); |
| 56 if (!t) | 56 if (!t) |
| 57 return NULL; | 57 return NULL; |
| 58 memset(t, 0, sizeof(*t)); | 58 memset(t, 0, sizeof(*t)); |
| 59 | 59 |
| 60 // register and fill | 60 // register and fill |
| 80 { | 80 { |
| 81 if (handle->avcodec) | 81 if (handle->avcodec) |
| 82 { | 82 { |
| 83 avcodec_close(&handle->avcontext); | 83 avcodec_close(&handle->avcontext); |
| 84 } | 84 } |
| 85 free(handle); | 85 av_free(handle); |
| 86 | 86 |
| 87 // count referencies | 87 // count referencies |
| 88 } | 88 } |
| 89 } | 89 } |
| 90 | 90 |
| 94 switch (cmd) | 94 switch (cmd) |
| 95 { | 95 { |
| 96 case AVC_OPEN_BY_NAME: | 96 case AVC_OPEN_BY_NAME: |
| 97 { | 97 { |
| 98 // pin char* codec name | 98 // pin char* codec name |
| 99 private_handle_t* handle = create_handle(); | 99 private_handle_t* h = create_handle(); |
| 100 (private_handle_t**)pout = handle; | 100 (private_handle_t**)pout = h; |
| 101 if (!handle) | 101 if (!h) |
| 102 return -ENOMEM; | 102 return -ENOMEM; |
| 103 if (!handle->avcodec) | 103 if (!h->avcodec) |
| 104 { | 104 { |
| 105 destroy_handle(handle); | 105 destroy_handle(h); |
| 106 (private_handle_t**)pout = NULL; | 106 (private_handle_t**)pout = NULL; |
| 107 return -1;// better error | 107 return -1;// better error |
| 108 } | 108 } |
| 109 return 0; | 109 return 0; |
| 110 } | 110 } |
| 111 case AVC_OPEN_BY_CODEC_ID: | 111 case AVC_OPEN_BY_CODEC_ID: |
| 112 { | 112 { |
| 113 // pin uint32_t codec fourcc | 113 // pin uint32_t codec fourcc |
| 114 private_handle_t* handle = create_handle(); | 114 private_handle_t* h = create_handle(); |
| 115 (private_handle_t**)pout = handle; | 115 (private_handle_t**)pout = h; |
| 116 if (!handle) | 116 if (!h) |
| 117 return -ENOMEM; | 117 return -ENOMEM; |
| 118 | 118 |
| 119 if (!handle->avcodec) | 119 if (!h->avcodec) |
| 120 { | 120 { |
| 121 destroy_handle(handle); | 121 destroy_handle(h); |
| 122 (private_handle_t**)pout = NULL; | 122 (private_handle_t**)pout = NULL; |
| 123 return -1;// better error | 123 return -1;// better error |
| 124 } | 124 } |
| 125 return 0; | 125 return 0; |
| 126 } | 126 } |
| 127 case AVC_OPEN_BY_FOURCC: | 127 case AVC_OPEN_BY_FOURCC: |
| 128 { | 128 { |
| 129 // pin uint32_t codec fourcc | 129 // pin uint32_t codec fourcc |
| 130 private_handle_t* handle = create_handle(); | 130 private_handle_t* h = create_handle(); |
| 131 (private_handle_t**)pout = handle; | 131 (private_handle_t**)pout = h; |
| 132 if (!handle) | 132 if (!h) |
| 133 return -ENOMEM; | 133 return -ENOMEM; |
| 134 handle->avcodec = avcodec_find_by_fcc((uint32_t) pin); | 134 h->avcodec = avcodec_find_by_fcc((uint32_t) pin); |
| 135 if (!handle->avcodec) | 135 if (!h->avcodec) |
| 136 { | 136 { |
| 137 destroy_handle(handle); | 137 destroy_handle(h); |
| 138 (private_handle_t**)pout = NULL; | 138 (private_handle_t**)pout = NULL; |
| 139 return -1;// better error | 139 return -1;// better error |
| 140 } | 140 } |
| 141 return 0; | 141 return 0; |
| 142 } | 142 } |
