| 318 | } |
| 319 | |
| 320 | static int packet_queue_put(PacketQueue *q, AVPacket *pkt) |
| 321 | { |
| 322 | AVPacketList *pkt1; |
| 323 | |
| 324 | /* duplicate the packet */ |
| 325 | if (pkt!=&flush_pkt && av_dup_packet(pkt) < 0) |
| 326 | return -1; |
| 327 | |
| 328 | pkt1 = av_malloc(sizeof(AVPacketList)); |
| 329 | if (!pkt1) |
| 330 | return -1; |
| 331 | pkt1->pkt = *pkt; |
| 332 | pkt1->next = NULL; |
| 333 | |
| 334 | |
| 335 | SDL_LockMutex(q->mutex); |
| 336 | |
| 337 | if (!q->last_pkt) |
| 338 | |
| 339 | q->first_pkt = pkt1; |
| 340 | else |
| 341 | q->last_pkt->next = pkt1; |
| 342 | q->last_pkt = pkt1; |
| 343 | q->nb_packets++; |
| 344 | q->size += pkt1->pkt.size + sizeof(*pkt1); |
| 345 | /* XXX: should duplicate packet data in DV case */ |
| 346 | SDL_CondSignal(q->cond); |
| 347 | |
| 348 | SDL_UnlockMutex(q->mutex); |
| 349 | return 0; |
| 350 | } |
| 351 | |
| 352 | static void packet_queue_abort(PacketQueue *q) |
| 353 | { |
no test coverage detected