Hello, I use av_init_packet in my code to decompress H264 streaming.

 

http://pastebin.com/sNpcpHjf <http://pastebin.com/sNpcpHjf> 

 

But it seems better for me to use av_new_packet because I don't have to use my 
lpFFMPEGBuffer. But When I try to replace in my code:

 

av_init_packet(&m_lpPacket);

if (m_lpFFMPEGBuffer == NULL)

{ m_lpFFMPEGBuffer = new 
BYTE[MAX_MPEG4VIDEO_FRAMESIZE+FF_INPUT_BUFFER_PADDING_SIZE];

}

 

if (m_lpFFMPEGBuffer !=NULL)

{ ZeroMemory( m_lpFFMPEGBuffer, 
MAX_MPEG4VIDEO_FRAMESIZE+FF_INPUT_BUFFER_PADDING_SIZE);

 

 CopyMemory( m_lpFFMPEGBuffer, lpImageData, dwImageSize);

 // Set the buffer to packet data

 m_lpPacket.data = m_lpFFMPEGBuffer;

 // Set the size to packet size

 m_lpPacket.size = dwImageSize;

}

 

By 

 

av_new_packet(&m_lpPacket, dwFrameSize)

CopyMemory( m_lpPacket.data , lpImageData, dwImageSize);

m_lpPacket.size = dwImageSize;

 

I have a crash when calling av_free_packet(&m_lpPacket). It seem the crash is 
in the av_destruct_packet.

If I don't call the avcodec_decode_video2 function, I don't have the crash. 

But if I use avcodec_decode_video2 and don't use the av_free_packet, I have a 
memory leak.

 

If someone can explain me,

Regards,

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to