Lines Matching refs:pkt

419 static int probe_codec(AVFormatContext *s, AVStream *st, const AVPacket *pkt)
430 if (pkt) {
431 uint8_t *new_buf = av_realloc(pd->buf, pd->buf_size+pkt->size+AVPROBE_PADDING_SIZE);
439 memcpy(pd->buf + pd->buf_size, pkt->data, pkt->size);
440 pd->buf_size += pkt->size;
454 if (end || av_log2(pd->buf_size) != av_log2(pd->buf_size - pkt->size)) {
472 static int update_wrap_reference(AVFormatContext *s, AVStream *st, int stream_index, AVPacket *pkt)
475 int64_t ref = pkt->dts;
481 ref = pkt->pts;
540 int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
547 pkt->data = NULL;
548 pkt->size = 0;
549 av_init_packet(pkt);
552 av_packet_unref(pkt);
562 AVStream *const st = s->streams[pktl->pkt.stream_index];
567 avpriv_packet_list_get(&si->raw_packet_buffer, pkt);
568 si->raw_packet_buffer_size -= pkt->size;
573 err = s->iformat->read_packet(s, pkt);
575 av_packet_unref(pkt);
595 err = av_packet_make_refcounted(pkt);
597 av_packet_unref(pkt);
601 if (pkt->flags & AV_PKT_FLAG_CORRUPT) {
604 pkt->stream_index, av_ts2str(pkt->dts));
607 av_packet_unref(pkt);
613 av_assert0(pkt->stream_index < (unsigned)s->nb_streams &&
616 st = s->streams[pkt->stream_index];
619 if (update_wrap_reference(s, st, pkt->stream_index, pkt) && sti->pts_wrap_behavior == AV_PTS_WRAP_SUB_OFFSET) {
629 pkt->dts = wrap_timestamp(st, pkt->dts);
630 pkt->pts = wrap_timestamp(st, pkt->pts);
636 pkt->dts = pkt->pts = av_rescale_q(av_gettime(), AV_TIME_BASE_Q, st->time_base);
642 pkt, NULL, 0);
644 av_packet_unref(pkt);
647 pkt1 = &si->raw_packet_buffer.tail->pkt;
660 AVPacket *pkt)
698 frame_size = av_get_audio_frame_duration(sti->avctx, pkt->size);
701 frame_size = av_get_audio_frame_duration2(st->codecpar, pkt->size);
808 if (pkt_buffer->pkt.stream_index != stream_index)
811 if (pkt_buffer->pkt.pts != AV_NOPTS_VALUE && delay <= MAX_REORDER_DELAY) {
812 pts_buffer[0] = pkt_buffer->pkt.pts;
816 pkt_buffer->pkt.dts = select_from_pts_buffer(st, pts_buffer, pkt_buffer->pkt.dts);
822 int64_t dts, int64_t pts, AVPacket *pkt)
847 if (pktl_it->pkt.stream_index != stream_index)
849 if (is_relative(pktl_it->pkt.pts))
850 pktl_it->pkt.pts += shift;
852 if (is_relative(pktl_it->pkt.dts))
853 pktl_it->pkt.dts += shift;
855 if (st->start_time == AV_NOPTS_VALUE && pktl_it->pkt.pts != AV_NOPTS_VALUE) {
856 st->start_time = pktl_it->pkt.pts;
866 if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || !(pkt->flags & AV_PKT_FLAG_DISCARD)) {
888 if (pktl->pkt.stream_index == stream_index) {
889 if (pktl->pkt.pts != pktl->pkt.dts ||
890 pktl->pkt.dts != AV_NOPTS_VALUE ||
891 pktl->pkt.duration)
896 if (pktl && pktl->pkt.dts != sti->first_dts) {
898 av_ts2str(sti->first_dts), av_ts2str(pktl->pkt.dts), av_ts2str(pktl->pkt.pts), pktl->pkt.duration);
911 if (pktl->pkt.stream_index != stream_index)
913 if ((pktl->pkt.pts == pktl->pkt.dts ||
914 pktl->pkt.pts == AV_NOPTS_VALUE) &&
915 (pktl->pkt.dts == AV_NOPTS_VALUE ||
916 pktl->pkt.dts == sti->first_dts ||
917 pktl->pkt.dts == RELATIVE_TS_BASE) &&
918 !pktl->pkt.duration &&
921 pktl->pkt.dts = cur_dts;
923 pktl->pkt.pts = cur_dts;
924 pktl->pkt.duration = duration;
927 cur_dts = pktl->pkt.dts + pktl->pkt.duration;
934 AVCodecParserContext *pc, AVPacket *pkt,
953 if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && pkt->dts != AV_NOPTS_VALUE) {
954 if (pkt->dts == pkt->pts && sti->last_dts_for_order_check != AV_NOPTS_VALUE) {
955 if (sti->last_dts_for_order_check <= pkt->dts) {
960 pkt->dts,
970 sti->last_dts_for_order_check = pkt->dts;
971 if (sti->dts_ordered < 8 * sti->dts_misordered && pkt->dts == pkt->pts)
972 pkt->dts = AV_NOPTS_VALUE;
975 if ((s->flags & AVFMT_FLAG_IGNDTS) && pkt->pts != AV_NOPTS_VALUE)
976 pkt->dts = AV_NOPTS_VALUE;
993 if (pkt->pts != AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE &&
994 st->pts_wrap_bits < 63 && pkt->dts > INT64_MIN + (1LL << st->pts_wrap_bits) &&
995 pkt->dts - (1LL << (st->pts_wrap_bits - 1)) > pkt->pts) {
996 if (is_relative(sti->cur_dts) || pkt->dts - (1LL<<(st->pts_wrap_bits - 1)) > sti->cur_dts) {
997 pkt->dts -= 1LL << st->pts_wrap_bits;
999 pkt->pts += 1LL << st->pts_wrap_bits;
1006 if (delay == 1 && pkt->dts == pkt->pts &&
1007 pkt->dts != AV_NOPTS_VALUE && presentation_delayed) {
1008 av_log(s, AV_LOG_DEBUG, "invalid dts/pts combination %"PRIi64"\n", pkt->dts);
1011 pkt->dts = AV_NOPTS_VALUE;
1014 duration = av_mul_q((AVRational) {pkt->duration, 1}, st->time_base);
1015 if (pkt->duration <= 0) {
1016 compute_frame_duration(s, &num, &den, st, pc, pkt);
1019 pkt->duration = av_rescale_rnd(1,
1026 if (pkt->duration > 0 && (si->packet_buffer.head || si->parse_queue.head))
1027 update_initial_durations(s, st, pkt->stream_index, pkt->duration);
1031 if (pc && sti->need_parsing == AVSTREAM_PARSE_TIMESTAMPS && pkt->size) {
1033 offset = av_rescale(pc->offset, pkt->duration, pkt->size);
1034 if (pkt->pts != AV_NOPTS_VALUE)
1035 pkt->pts += offset;
1036 if (pkt->dts != AV_NOPTS_VALUE)
1037 pkt->dts += offset;
1041 if (pkt->dts != AV_NOPTS_VALUE &&
1042 pkt->pts != AV_NOPTS_VALUE &&
1043 pkt->pts > pkt->dts)
1049 presentation_delayed, av_ts2str(pkt->pts), av_ts2str(pkt->dts), av_ts2str(sti->cur_dts),
1050 pkt->stream_index, pc, pkt->duration, delay, onein_oneout);
1059 if (pkt->dts == AV_NOPTS_VALUE)
1060 pkt->dts = sti->last_IP_pts;
1061 update_initial_timestamps(s, pkt->stream_index, pkt->dts, pkt->pts, pkt);
1062 if (pkt->dts == AV_NOPTS_VALUE)
1063 pkt->dts = sti->cur_dts;
1067 if (sti->last_IP_duration == 0 && (uint64_t)pkt->duration <= INT32_MAX)
1068 sti->last_IP_duration = pkt->duration;
1069 if (pkt->dts != AV_NOPTS_VALUE)
1070 sti->cur_dts = av_sat_add64(pkt->dts, sti->last_IP_duration);
1071 if (pkt->dts != AV_NOPTS_VALUE &&
1072 pkt->pts == AV_NOPTS_VALUE &&
1077 pkt->pts = next_dts;
1079 if ((uint64_t)pkt->duration <= INT32_MAX)
1080 sti->last_IP_duration = pkt->duration;
1081 sti->last_IP_pts = pkt->pts;
1084 } else if (pkt->pts != AV_NOPTS_VALUE ||
1085 pkt->dts != AV_NOPTS_VALUE ||
1086 pkt->duration > 0 ) {
1089 if (pkt->pts == AV_NOPTS_VALUE)
1090 pkt->pts = pkt->dts;
1091 update_initial_timestamps(s, pkt->stream_index, pkt->pts,
1092 pkt->pts, pkt);
1093 if (pkt->pts == AV_NOPTS_VALUE)
1094 pkt->pts = sti->cur_dts;
1095 pkt->dts = pkt->pts;
1096 if (pkt->pts != AV_NOPTS_VALUE && duration.num >= 0)
1097 sti->cur_dts = av_add_stable(st->time_base, pkt->pts, duration, 1);
1101 if (pkt->pts != AV_NOPTS_VALUE && delay <= MAX_REORDER_DELAY) {
1102 sti->pts_buffer[0] = pkt->pts;
1107 pkt->dts = select_from_pts_buffer(st, sti->pts_buffer, pkt->dts);
1112 update_initial_timestamps(s, pkt->stream_index, pkt->dts, pkt->pts, pkt);
1113 if (pkt->dts > sti->cur_dts)
1114 sti->cur_dts = pkt->dts;
1118 presentation_delayed, delay, av_ts2str(pkt->pts), av_ts2str(pkt->dts), av_ts2str(sti->cur_dts), st->index, st->id);
1122 pkt->flags |= AV_PKT_FLAG_KEY;
1128 * @param pkt Packet to parse; must not be NULL.
1129 * @param flush Indicates whether to flush. If set, pkt must be blank.
1131 static int parse_packet(AVFormatContext *s, AVPacket *pkt,
1138 const uint8_t *data = pkt->data;
1139 int size = pkt->size;
1144 compute_pkt_fields(s, st, sti->parser, pkt, AV_NOPTS_VALUE, AV_NOPTS_VALUE);
1148 int64_t next_pts = pkt->pts;
1149 int64_t next_dts = pkt->dts;
1154 pkt->pts, pkt->dts, pkt->pos);
1156 pkt->pts = pkt->dts = AV_NOPTS_VALUE;
1157 pkt->pos = -1;
1168 if (pkt->buf && out_pkt->data == pkt->data) {
1169 /* reference pkt->buf only when out_pkt->data is guaranteed to point
1173 out_pkt->buf = av_buffer_ref(pkt->buf);
1184 if (pkt->side_data) {
1185 out_pkt->side_data = pkt->side_data;
1186 out_pkt->side_data_elems = pkt->side_data_elems;
1187 pkt->side_data = NULL;
1188 pkt->side_data_elems = 0;
1192 out_pkt->duration = (sti->parser->flags & PARSER_FLAG_COMPLETE_FRAMES) ? pkt->duration : 0;
1207 out_pkt->flags |= pkt->flags & (AV_PKT_FLAG_DISCARD | AV_PKT_FLAG_CORRUPT);
1217 if (sti->parser->key_frame == -1 && sti->parser->pict_type ==AV_PICTURE_TYPE_NONE && (pkt->flags&AV_PKT_FLAG_KEY))
1237 av_packet_unref(pkt);
1246 static int read_frame_internal(AVFormatContext *s, AVPacket *pkt)
1257 ret = ff_read_packet(s, pkt);
1266 parse_packet(s, pkt, st->index, 1);
1273 st = s->streams[pkt->stream_index];
1294 av_packet_unref(pkt);
1301 if (pkt->pts != AV_NOPTS_VALUE &&
1302 pkt->dts != AV_NOPTS_VALUE &&
1303 pkt->pts < pkt->dts) {
1306 pkt->stream_index,
1307 av_ts2str(pkt->pts),
1308 av_ts2str(pkt->dts),
1309 pkt->size);
1314 pkt->stream_index,
1315 av_ts2str(pkt->pts),
1316 av_ts2str(pkt->dts),
1317 pkt->size, pkt->duration, pkt->flags);
1337 compute_pkt_fields(s, st, NULL, pkt, AV_NOPTS_VALUE, AV_NOPTS_VALUE);
1339 (pkt->flags & AV_PKT_FLAG_KEY) && pkt->dts != AV_NOPTS_VALUE) {
1341 av_add_index_entry(st, pkt->pos, pkt->dts,
1346 if ((ret = parse_packet(s, pkt, pkt->stream_index, 0)) < 0)
1363 av_packet_unref(pkt);
1365 if (pkt->flags & AV_PKT_FLAG_KEY)
1368 av_packet_unref(pkt);
1374 ret = avpriv_packet_list_get(&si->parse_queue, pkt);
1377 AVStream *const st = s->streams[pkt->stream_index];
1380 if (sti->first_discard_sample && pkt->pts != AV_NOPTS_VALUE) {
1381 int64_t pts = pkt->pts - (is_relative(pkt->pts) ? RELATIVE_TS_BASE : 0);
1383 int64_t duration = ts_to_samples(st, pkt->duration);
1389 if (sti->start_skip_samples && (pkt->pts == 0 || pkt->pts == RELATIVE_TS_BASE))
1393 uint8_t *p = av_packet_new_side_data(pkt, AV_PKT_DATA_SKIP_SAMPLES, 10);
1408 if (av_packet_get_side_data(pkt, src_sd->type, NULL))
1411 dst_data = av_packet_new_side_data(pkt, src_sd->type, src_sd->size);
1438 pkt->stream_index,
1439 av_ts2str(pkt->pts),
1440 av_ts2str(pkt->dts),
1441 pkt->size, pkt->duration, pkt->flags);
1451 int av_read_frame(AVFormatContext *s, AVPacket *pkt)
1461 ? avpriv_packet_list_get(&si->packet_buffer, pkt)
1462 : read_frame_internal(s, pkt);
1472 AVPacket *next_pkt = &pktl->pkt;
1481 if (pktl->pkt.stream_index == next_pkt->stream_index &&
1482 av_compare_mod(next_pkt->dts, pktl->pkt.dts, 2ULL << (wrap_bits - 1)) < 0) {
1483 if (av_compare_mod(pktl->pkt.pts, pktl->pkt.dts, 2ULL << (wrap_bits - 1))) {
1485 next_pkt->pts = pktl->pkt.dts;
1489 last_dts = pktl->pkt.dts;
1509 ret = avpriv_packet_list_get(&si->packet_buffer, pkt);
1514 ret = read_frame_internal(s, pkt);
1524 pkt, NULL, 0);
1526 av_packet_unref(pkt);
1532 st = s->streams[pkt->stream_index];
1533 if ((s->iformat->flags & AVFMT_GENERIC_INDEX) && pkt->flags & AV_PKT_FLAG_KEY) {
1535 av_add_index_entry(st, pkt->pos, pkt->dts, 0, 0, AVINDEX_KEYFRAME);
1538 if (is_relative(pkt->dts))
1539 pkt->dts -= RELATIVE_TS_BASE;
1540 if (is_relative(pkt->pts))
1541 pkt->pts -= RELATIVE_TS_BASE;
1739 AVPacket *const pkt = si->pkt;
1789 ret = ff_read_packet(ic, pkt);
1793 read_size += pkt->size;
1794 st = ic->streams[pkt->stream_index];
1796 if (pkt->pts != AV_NOPTS_VALUE &&
1799 if (pkt->duration == 0) {
1800 compute_frame_duration(ic, &num, &den, st, sti->parser, pkt);
1802 pkt->duration = av_rescale_rnd(1,
1808 duration = pkt->pts + pkt->duration;
1821 av_packet_unref(pkt);
2011 AVPacket pkt = *avpkt;
2062 while ((pkt.size > 0 || (!pkt.data && got_picture)) &&
2070 ret = avcodec_send_packet(avctx, &pkt);
2074 pkt.size = 0;
2082 &got_picture, &pkt);
2086 pkt.size = 0;
2370 static int extract_extradata(FFFormatContext *si, AVStream *st, const AVPacket *pkt)
2385 ret = av_packet_ref(pkt_ref, pkt);
2437 AVPacket *pkt1 = si->pkt;
2537 const AVPacket *pkt;
2644 pkt = &si->packet_buffer.tail->pkt;
2646 pkt = pkt1;
2649 st = ic->streams[pkt->stream_index];
2652 read_size += pkt->size;
2662 if (pkt->dts != AV_NOPTS_VALUE && sti->codec_info_nb_frames > 1) {
2665 sti->info->fps_last_dts >= pkt->dts) {
2671 pkt->dts);
2680 (pkt->dts - (uint64_t)sti->info->fps_last_dts) / 1000 >
2688 pkt->dts);
2695 sti->info->fps_first_dts = pkt->dts;
2698 sti->info->fps_last_dts = pkt->dts;
2725 t, pkt->stream_index);
2730 if (pkt->duration > 0) {
2731 if (avctx->codec_type == AVMEDIA_TYPE_SUBTITLE && pkt->pts != AV_NOPTS_VALUE && st->start_time != AV_NOPTS_VALUE && pkt->pts >= st->start_time
2732 && (uint64_t)pkt->pts - st->start_time < INT64_MAX
2734 sti->info->codec_info_duration = FFMIN(pkt->pts - st->start_time, sti->info->codec_info_duration + pkt->duration);
2736 sti->info->codec_info_duration += pkt->duration;
2743 ff_rfps_add_frame(ic, st, pkt->dts);
2745 if (pkt->dts != pkt->pts && pkt->dts != AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE)
2749 ret = extract_extradata(si, st, pkt);
2763 try_decode_frame(ic, st, pkt,
2799 AVPacket *empty_pkt = si->pkt;