|
|
|
@ -284,7 +284,37 @@ static AVPacket flush_pkt; |
|
|
|
|
|
|
|
|
|
static SDL_Surface *screen; |
|
|
|
|
|
|
|
|
|
static int packet_queue_put(PacketQueue *q, AVPacket *pkt); |
|
|
|
|
static int packet_queue_put(PacketQueue *q, AVPacket *pkt) |
|
|
|
|
{ |
|
|
|
|
AVPacketList *pkt1; |
|
|
|
|
|
|
|
|
|
/* duplicate the packet */ |
|
|
|
|
if (pkt!=&flush_pkt && av_dup_packet(pkt) < 0) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
pkt1 = av_malloc(sizeof(AVPacketList)); |
|
|
|
|
if (!pkt1) |
|
|
|
|
return -1; |
|
|
|
|
pkt1->pkt = *pkt; |
|
|
|
|
pkt1->next = NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDL_LockMutex(q->mutex); |
|
|
|
|
|
|
|
|
|
if (!q->last_pkt) |
|
|
|
|
|
|
|
|
|
q->first_pkt = pkt1; |
|
|
|
|
else |
|
|
|
|
q->last_pkt->next = pkt1; |
|
|
|
|
q->last_pkt = pkt1; |
|
|
|
|
q->nb_packets++; |
|
|
|
|
q->size += pkt1->pkt.size + sizeof(*pkt1); |
|
|
|
|
/* XXX: should duplicate packet data in DV case */ |
|
|
|
|
SDL_CondSignal(q->cond); |
|
|
|
|
|
|
|
|
|
SDL_UnlockMutex(q->mutex); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* packet queue handling */ |
|
|
|
|
static void packet_queue_init(PacketQueue *q) |
|
|
|
@ -319,38 +349,6 @@ static void packet_queue_end(PacketQueue *q) |
|
|
|
|
SDL_DestroyCond(q->cond); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int packet_queue_put(PacketQueue *q, AVPacket *pkt) |
|
|
|
|
{ |
|
|
|
|
AVPacketList *pkt1; |
|
|
|
|
|
|
|
|
|
/* duplicate the packet */ |
|
|
|
|
if (pkt!=&flush_pkt && av_dup_packet(pkt) < 0) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
pkt1 = av_malloc(sizeof(AVPacketList)); |
|
|
|
|
if (!pkt1) |
|
|
|
|
return -1; |
|
|
|
|
pkt1->pkt = *pkt; |
|
|
|
|
pkt1->next = NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDL_LockMutex(q->mutex); |
|
|
|
|
|
|
|
|
|
if (!q->last_pkt) |
|
|
|
|
|
|
|
|
|
q->first_pkt = pkt1; |
|
|
|
|
else |
|
|
|
|
q->last_pkt->next = pkt1; |
|
|
|
|
q->last_pkt = pkt1; |
|
|
|
|
q->nb_packets++; |
|
|
|
|
q->size += pkt1->pkt.size + sizeof(*pkt1); |
|
|
|
|
/* XXX: should duplicate packet data in DV case */ |
|
|
|
|
SDL_CondSignal(q->cond); |
|
|
|
|
|
|
|
|
|
SDL_UnlockMutex(q->mutex); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void packet_queue_abort(PacketQueue *q) |
|
|
|
|
{ |
|
|
|
|
SDL_LockMutex(q->mutex); |
|
|
|
|