- GXFContext *gxf = s->priv_data;
- AVPacket new_pkt;
- int i;
-
- for (i = 0; i < s->nb_streams; i++) {
- if (s->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) {
- GXFStreamContext *sc = &gxf->streams[i];
- if (pkt && pkt->stream_index == i) {
- fifo_write(&sc->audio_buffer, pkt->data, pkt->size, NULL);
- pkt = NULL;
- }
- if (flush || fifo_size(&sc->audio_buffer, NULL) >= GXF_AUDIO_PACKET_SIZE) {
- if (gxf_new_audio_packet(gxf, sc, &new_pkt, flush) > 0) {
- pkt = &new_pkt;
- break; /* add pkt right now into list */
- }
- }
- }
- }
- return av_interleave_packet_per_dts(s, out, pkt, flush);
+ if (pkt && s->streams[pkt->stream_index]->codec->codec_type == CODEC_TYPE_VIDEO)
+ pkt->duration = 2; // enforce 2 fields
+ return ff_audio_rechunk_interleave(s, out, pkt, flush,
+ av_interleave_packet_per_dts, gxf_compare_field_nb);