]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/avpacket.c
Rename ff_parse_eval() to ff_eval_expr().
[ffmpeg] / libavcodec / avpacket.c
index d91ee3a10d021bd9c4090ea9d2f6c36b62439bf8..c51260face1bc4be9ff2a4a5de45fe75e5004328 100644 (file)
@@ -42,23 +42,25 @@ void av_init_packet(AVPacket *pkt)
     pkt->convergence_duration = 0;
     pkt->flags = 0;
     pkt->stream_index = 0;
-    pkt->destruct= av_destruct_packet_nofree;
+    pkt->destruct= NULL;
 }
 
 int av_new_packet(AVPacket *pkt, int size)
 {
-    uint8_t *data;
-    if((unsigned)size > (unsigned)size + FF_INPUT_BUFFER_PADDING_SIZE)
-        return AVERROR(ENOMEM);
-    data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);
-    if (!data)
-        return AVERROR(ENOMEM);
-    memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+    uint8_t *data= NULL;
+    if((unsigned)size < (unsigned)size + FF_INPUT_BUFFER_PADDING_SIZE)
+        data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);
+    if (data){
+        memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+    }else
+        size=0;
 
     av_init_packet(pkt);
     pkt->data = data;
     pkt->size = size;
     pkt->destruct = av_destruct_packet;
+    if(!data)
+        return AVERROR(ENOMEM);
     return 0;
 }
 
@@ -87,3 +89,11 @@ int av_dup_packet(AVPacket *pkt)
     }
     return 0;
 }
+
+void av_free_packet(AVPacket *pkt)
+{
+    if (pkt) {
+        if (pkt->destruct) pkt->destruct(pkt);
+        pkt->data = NULL; pkt->size = 0;
+    }
+}