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
This commit is contained in:
parent
ed7fa39c2d
commit
de04ad45ec
@ -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)
|
|||||||
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)
|
|||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user