[FFmpeg-user] Unable to decode AVPacket that are retrieved from AVPacketList.
kifayat ullah
kifayat.ullah at yahoo.com
Fri May 30 18:56:49 CEST 2014
On Wednesday, 21 May 2014, 17:00, sithruk sana <get2jils at gmail.com> wrote:
Dear all,
I have been implementing the video [ only] player in android using SDL
and ffmpeg.
I followed the below approach [from dranger tutorial ]
1) There is a linked list with each node of type AVPacketList
AVPacketList *firstNode=NULL, *lastNode=NULL;
2) There are two threads:
ReadPacket - Reads packet from av_read_frame, and stores in the
linked list.
FrameDisplay - Reads packet from Linked list , decodes the same if
complete packet is received. Pushes specific event to SDL to render the
frame.
3) Main Function:
kick starts two threads ReadPacket, FrameDisplay.
*Issue:*
How can i pass to and from queue ? what is the correct way of doing ?
In ReadPacket thread:
AVPacket pkt1, *rpacket=&pkt1;
if ( av_read_frame(pFormatCtx, rpacket) >= 0) {
if (packet.stream_index == videoStream) {
// Creating new node to push..
AVPacketList *newNode =
av_malloc(sizeof(AVPacketList));
newNode->pkt = *rpacket;
newNode->next = NULL;
// pushing newNode.
}
In FrameDisplay Thread:
1) Reading node from queue
2) take the packet like:
AVPacket *pkt;
*pkt = newNode->pkt;
3) Decode Now:
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, pkt);
if (frameFinished) {
// I AM UNABLE TO REACH HERE...
}
*It is the right way to copy the AVPacket structure to and from ?*
ie: While copying newNode->pkt = *rpacket;
While retrieving AVPacket *pkt = newNode->pkt ?
*Surprisingly, instead of keeping the AVPacket in the queue, if i directly
decode, i could able to decode successfully.*
Kindly point out what went wrong ?
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user at ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user
Please post full code to see what is wrong.
-KU
More information about the ffmpeg-user
mailing list