Commit de04ad45 authored by Aurelien Jacobs's avatar Aurelien Jacobs

Add one more parameter to avc_parse_nal_units so that it allows not to

free the input buffer.
This is required by upcoming extraction of isom_write_avcc to a function.

Originally committed as revision 11496 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent ed7fa39c
...@@ -452,10 +452,10 @@ static uint8_t *avc_find_startcode( uint8_t *p, uint8_t *end ) ...@@ -452,10 +452,10 @@ static uint8_t *avc_find_startcode( uint8_t *p, uint8_t *end )
return end + 3; return end + 3;
} }
static int avc_parse_nal_units(uint8_t **buf, int *size) static int avc_parse_nal_units(uint8_t *buf_in, uint8_t **buf, int *size)
{ {
ByteIOContext *pb; ByteIOContext *pb;
uint8_t *p = *buf; uint8_t *p = buf_in;
uint8_t *end = p + *size; uint8_t *end = p + *size;
uint8_t *nal_start, *nal_end; uint8_t *nal_start, *nal_end;
int ret = url_open_dyn_buf(&pb); int ret = url_open_dyn_buf(&pb);
...@@ -488,7 +488,7 @@ static int mov_write_avcc_tag(ByteIOContext *pb, MOVTrack *track) ...@@ -488,7 +488,7 @@ static int mov_write_avcc_tag(ByteIOContext *pb, MOVTrack *track)
uint32_t sps_size=0, pps_size=0; uint32_t sps_size=0, pps_size=0;
uint8_t *sps=0, *pps=0; uint8_t *sps=0, *pps=0;
int ret = avc_parse_nal_units(&track->vosData, &track->vosLen); int ret = avc_parse_nal_units(track->vosData, &track->vosData, &track->vosLen);
if (ret < 0) if (ret < 0)
return ret; return ret;
buf = track->vosData; buf = track->vosData;
...@@ -1637,7 +1637,7 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -1637,7 +1637,7 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt)
if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) { if (enc->codec_id == CODEC_ID_H264 && trk->vosLen > 0 && *(uint8_t *)trk->vosData != 1) {
/* from x264 or from bytestream h264 */ /* from x264 or from bytestream h264 */
/* nal reformating needed */ /* nal reformating needed */
int ret = avc_parse_nal_units(&pkt->data, &pkt->size); int ret = avc_parse_nal_units(pkt->data, &pkt->data, &pkt->size);
if (ret < 0) if (ret < 0)
return ret; return ret;
assert(pkt->size); assert(pkt->size);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment