Lines Matching refs:pkt

496 static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket *pkt)
506 (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE)) {
516 av_ts2str(pkt->pts), av_ts2str(pkt->dts), av_ts2str(sti->cur_dts), delay, pkt->size, pkt->stream_index);
518 if (pkt->pts == AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE && delay == 0)
519 pkt->pts = pkt->dts;
522 if ((pkt->pts == 0 || pkt->pts == AV_NOPTS_VALUE) && pkt->dts == AV_NOPTS_VALUE && !delay) {
528 pkt->dts =
529 // pkt->pts= st->cur_dts;
530 pkt->pts = sti->priv_pts->val;
534 if (pkt->pts != AV_NOPTS_VALUE && pkt->dts == AV_NOPTS_VALUE && delay <= MAX_REORDER_DELAY) {
535 sti->pts_buffer[0] = pkt->pts;
537 sti->pts_buffer[i] = pkt->pts + (i - delay - 1) * pkt->duration;
541 pkt->dts = sti->pts_buffer[0];
548 sti->cur_dts >= pkt->dts) || sti->cur_dts > pkt->dts)) {
551 st->index, av_ts2str(sti->cur_dts), av_ts2str(pkt->dts));
554 if (pkt->dts != AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE && pkt->pts < pkt->dts) {
557 av_ts2str(pkt->pts), av_ts2str(pkt->dts),
564 av_ts2str(pkt->pts), av_ts2str(pkt->dts));
566 sti->cur_dts = pkt->dts;
567 sti->priv_pts->val = pkt->dts;
572 frame_size = (pkt->flags & AV_PKT_FLAG_UNCODED_FRAME) ?
573 (*(AVFrame **)pkt->data)->nb_samples :
574 av_get_audio_frame_duration2(st->codecpar, pkt->size);
579 if (frame_size >= 0 && (pkt->size || sti->priv_pts->num != sti->priv_pts->den >> 1 || sti->priv_pts->val)) {
592 static void guess_pkt_duration(AVFormatContext *s, AVStream *st, AVPacket *pkt)
594 if (pkt->duration < 0 && st->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) {
596 pkt->duration, pkt->stream_index);
597 pkt->duration = 0;
600 if (pkt->duration)
606 pkt->duration = av_rescale_q(1, av_inv_q(st->avg_frame_rate),
609 pkt->duration = 1;
612 int frame_size = av_get_audio_frame_duration2(st->codecpar, pkt->size);
614 pkt->duration = av_rescale_q(frame_size,
624 AVPacket *pkt)
634 int64_t ts = use_pts ? pkt->pts : pkt->dts;
644 AVRational cmp_tb = s->streams[pktl->pkt.stream_index]->time_base;
645 int64_t cmp_ts = use_pts ? pktl->pkt.pts : pktl->pkt.dts;
671 if (pkt->dts != AV_NOPTS_VALUE)
672 pkt->dts += offset;
673 if (pkt->pts != AV_NOPTS_VALUE)
674 pkt->pts += offset;
677 if (pkt->pts != AV_NOPTS_VALUE && pkt->pts < 0) {
681 av_ts2str(pkt->pts),
682 pkt->stream_index
686 if (pkt->dts != AV_NOPTS_VALUE && pkt->dts < 0) {
691 av_ts2str(pkt->dts),
692 pkt->stream_index
706 static int write_packet(AVFormatContext *s, AVPacket *pkt)
709 AVStream *const st = s->streams[pkt->stream_index];
718 if (pkt->dts != AV_NOPTS_VALUE)
719 pkt->dts += offset;
720 if (pkt->pts != AV_NOPTS_VALUE)
721 pkt->pts += offset;
723 handle_avoid_negative_ts(si, sti, pkt);
725 if ((pkt->flags & AV_PKT_FLAG_UNCODED_FRAME)) {
726 AVFrame **frame = (AVFrame **)pkt->data;
727 av_assert0(pkt->size == sizeof(*frame));
728 ret = s->oformat->write_uncoded_frame(s, pkt->stream_index, frame, 0);
730 ret = s->oformat->write_packet(s, pkt);
745 static int check_packet(AVFormatContext *s, AVPacket *pkt)
747 if (pkt->stream_index < 0 || pkt->stream_index >= s->nb_streams) {
749 pkt->stream_index);
753 if (s->streams[pkt->stream_index]->codecpar->codec_type == AVMEDIA_TYPE_ATTACHMENT) {
761 static int prepare_input_packet(AVFormatContext *s, AVStream *st, AVPacket *pkt)
771 if (pkt->pts == AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE)
772 pkt->pts = pkt->dts;
773 if (pkt->dts == AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE)
774 pkt->dts = pkt->pts;
778 if (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE) {
787 ((!(s->oformat->flags & AVFMT_TS_NONSTRICT) && sti->cur_dts >= pkt->dts) ||
788 sti->cur_dts > pkt->dts)) {
792 st->index, sti->cur_dts, pkt->dts);
796 if (pkt->pts < pkt->dts) {
798 pkt->pts, pkt->dts, st->index);
805 pkt->flags |= AV_PKT_FLAG_KEY;
807 if (!pkt->data && !pkt->side_data_elems) {
810 av_buffer_unref(&pkt->buf);
811 return av_packet_make_refcounted(pkt);
819 int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,
825 AVStream *st = s->streams[pkt->stream_index];
831 av_packet_unref(pkt);
834 if ((ret = av_packet_make_refcounted(pkt)) < 0) {
836 av_packet_unref(pkt);
840 av_packet_move_ref(&this_pktl->pkt, pkt);
841 pkt = &this_pktl->pkt;
851 sti->interleaver_chunk_size += pkt->size;
852 sti->interleaver_chunk_duration += pkt->duration;
856 pkt->flags |= CHUNK_START;
859 int64_t syncto = av_rescale(pkt->dts + syncoffset, 1, max)*max - syncoffset;
861 sti->interleaver_chunk_duration += (pkt->dts - syncto)/8 - max;
867 if (chunked && !(pkt->flags & CHUNK_START))
870 if (compare(s, &si->packet_buffer.tail->pkt, pkt)) {
872 && ((chunked && !((*next_point)->pkt.flags&CHUNK_START))
873 || !compare(s, &(*next_point)->pkt, pkt)))
894 const AVPacket *pkt)
896 AVStream *st = s->streams[pkt->stream_index];
898 int comp = av_compare_ts(next->dts, st2->time_base, pkt->dts,
907 ts = av_rescale_q(pkt ->dts, st ->time_base, AV_TIME_BASE_Q) - preload;
910 ts = ((uint64_t)pkt ->dts*st ->time_base.num*AV_TIME_BASE - (uint64_t)preload *st ->time_base.den)*st2->time_base.den
919 return pkt->stream_index < next->stream_index;
923 int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt,
933 if ((ret = ff_interleave_add_packet(s, pkt, interleave_compare_dts)) < 0)
958 AVPacket *const top_pkt = &si->packet_buffer.head->pkt;
973 last_dts = av_rescale_q(last->pkt.dts,
992 AVPacket *const top_pkt = &si->packet_buffer.head->pkt;
1002 AVPacket *const top_pkt = &pktl->pkt;
1018 av_packet_unref(&pktl->pkt);
1026 AVStream *const st = s->streams[pktl->pkt.stream_index];
1031 avpriv_packet_list_get(&si->packet_buffer, pkt);
1039 int ff_interleave_packet_passthrough(AVFormatContext *s, AVPacket *pkt,
1066 if (pktl->pkt.stream_index == stream) {
1067 return &pktl->pkt;
1074 static int check_bitstream(AVFormatContext *s, FFStream *sti, AVPacket *pkt)
1083 if ((ret = s->oformat->check_bitstream(s, &sti->pub, pkt)) < 0)
1093 static int interleaved_write_packet(AVFormatContext *s, AVPacket *pkt,
1098 int ret = si->interleave_packet(s, pkt, flush, has_packet);
1104 ret = write_packet(s, pkt);
1105 av_packet_unref(pkt);
1111 static int write_packet_common(AVFormatContext *s, AVStream *st, AVPacket *pkt, int interleaved)
1117 pkt->size, av_ts2str(pkt->dts), av_ts2str(pkt->pts));
1119 guess_pkt_duration(s, st, pkt);
1122 if ((ret = compute_muxer_pkt_fields(s, st, pkt)) < 0 && !(s->oformat->flags & AVFMT_NOTIMESTAMPS))
1127 if (pkt->dts == AV_NOPTS_VALUE && !(s->oformat->flags & AVFMT_NOTIMESTAMPS))
1129 return interleaved_write_packet(s, pkt, 0, 1);
1131 return write_packet(s, pkt);
1135 static int write_packets_from_bsfs(AVFormatContext *s, AVStream *st, AVPacket *pkt, int interleaved)
1141 if ((ret = av_bsf_send_packet(bsfc, pkt)) < 0) {
1149 ret = av_bsf_receive_packet(bsfc, pkt);
1159 av_packet_rescale_ts(pkt, bsfc->time_base_out, st->time_base);
1160 ret = write_packet_common(s, st, pkt, interleaved);
1161 if (ret >= 0 && !interleaved) // a successful write_packet_common already unrefed pkt for interleaved
1162 av_packet_unref(pkt);
1168 static int write_packets_common(AVFormatContext *s, AVPacket *pkt, int interleaved)
1172 int ret = check_packet(s, pkt);
1175 st = s->streams[pkt->stream_index];
1178 ret = prepare_input_packet(s, st, pkt);
1182 ret = check_bitstream(s, sti, pkt);
1187 return write_packets_from_bsfs(s, st, pkt, interleaved);
1189 return write_packet_common(s, st, pkt, interleaved);
1196 AVPacket *pkt = si->parse_pkt;
1211 pkt = in;
1218 pkt->data = in->data;
1219 pkt->size = in->size;
1220 ret = av_packet_copy_props(pkt, in);
1224 pkt->buf = av_buffer_ref(in->buf);
1225 if (!pkt->buf) {
1232 ret = write_packets_common(s, pkt, 0/*non-interleaved*/);
1236 av_packet_unref(pkt);
1240 int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)
1244 if (pkt) {
1245 ret = write_packets_common(s, pkt, 1/*interleaved*/);
1247 av_packet_unref(pkt);
1258 AVPacket *const pkt = si->parse_pkt;
1265 ret1 = write_packets_from_bsfs(s, st, pkt, 1/*interleaved*/);
1267 av_packet_unref(pkt);
1272 ret1 = interleaved_write_packet(s, pkt, 1, 0);
1299 av_packet_unref(si->pkt);
1355 int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
1358 int64_t pts = pkt->pts, dts = pkt->dts, duration = pkt->duration;
1359 int stream_index = pkt->stream_index;
1360 AVRational time_base = pkt->time_base;
1363 pkt->stream_index = dst_stream;
1365 av_packet_rescale_ts(pkt,
1370 ret = av_write_frame(dst, pkt);
1374 pkt->pts = pts;
1375 pkt->dts = dts;
1376 pkt->duration = duration;
1377 pkt->stream_index = stream_index;
1378 pkt->time_base = time_base;
1380 ret = av_interleaved_write_frame(dst, pkt);
1395 AVPacket *pkt = si->parse_pkt;
1404 pkt = NULL;
1411 pkt->buf = av_buffer_create((void *)framep, bufsize,
1413 if (!pkt->buf) {
1421 pkt->data = (void *)framep;
1422 pkt->size = sizeof(frame);
1423 pkt->pts =
1424 pkt->dts = frame->pts;
1425 pkt->duration = frame->pkt_duration;
1426 pkt->stream_index = stream_index;
1427 pkt->flags |= AV_PKT_FLAG_UNCODED_FRAME;
1430 return interleaved ? av_interleaved_write_frame(s, pkt) :
1431 av_write_frame(s, pkt);