Lines Matching refs:pes

537     MpegTSPESFilter *pes;  in mpegts_open_pes_filter()  local
542 pes = &filter->u.pes_filter; in mpegts_open_pes_filter()
543 pes->pes_cb = pes_cb; in mpegts_open_pes_filter()
544 pes->opaque = opaque; in mpegts_open_pes_filter()
561 PESContext *pes = filter->u.pes_filter.opaque; in mpegts_close_filter() local
562 av_buffer_unref(&pes->buffer); in mpegts_close_filter()
565 if (!pes->st || pes->merged_st) { in mpegts_close_filter()
891 static int mpegts_set_stream_info(AVStream *st, PESContext *pes, in mpegts_set_stream_info() argument
899 av_log(pes->stream, AV_LOG_DEBUG, "cannot set stream info, internal codec is open\n"); in mpegts_set_stream_info()
904 st->priv_data = pes; in mpegts_set_stream_info()
908 pes->st = st; in mpegts_set_stream_info()
909 pes->stream_type = stream_type; in mpegts_set_stream_info()
911 av_log(pes->stream, AV_LOG_DEBUG, in mpegts_set_stream_info()
913 st->index, pes->stream_type, pes->pid, (char *)&prog_reg_desc); in mpegts_set_stream_info()
915 st->codecpar->codec_tag = pes->stream_type; in mpegts_set_stream_info()
917 mpegts_find_stream_type(st, pes->stream_type, ISO_types); in mpegts_set_stream_info()
918 if (pes->stream_type == 4 || pes->stream_type == 0x0f) in mpegts_set_stream_info()
923 mpegts_find_stream_type(st, pes->stream_type, HDMV_types); in mpegts_set_stream_info()
924 if (pes->stream_type == 0x83) { in mpegts_set_stream_info()
932 memcpy(sub_pes, pes, sizeof(*sub_pes)); in mpegts_set_stream_info()
934 sub_st = avformat_new_stream(pes->stream, NULL); in mpegts_set_stream_info()
940 sub_st->id = pes->pid; in mpegts_set_stream_info()
946 sub_pes->sub_st = pes->sub_st = sub_st; in mpegts_set_stream_info()
950 mpegts_find_stream_type(st, pes->stream_type, MISC_types); in mpegts_set_stream_info()
973 static void reset_pes_packet_state(PESContext *pes) in reset_pes_packet_state() argument
975 pes->pts = AV_NOPTS_VALUE; in reset_pes_packet_state()
976 pes->dts = AV_NOPTS_VALUE; in reset_pes_packet_state()
977 pes->data_index = 0; in reset_pes_packet_state()
978 pes->flags = 0; in reset_pes_packet_state()
979 av_buffer_unref(&pes->buffer); in reset_pes_packet_state()
989 static int new_pes_packet(PESContext *pes, AVPacket *pkt) in new_pes_packet() argument
995 pkt->buf = pes->buffer; in new_pes_packet()
996 pkt->data = pes->buffer->data; in new_pes_packet()
997 pkt->size = pes->data_index; in new_pes_packet()
999 if (pes->total_size != MAX_PES_PAYLOAD && in new_pes_packet()
1000 pes->pes_header_size + pes->data_index != pes->total_size + in new_pes_packet()
1002 av_log(pes->stream, AV_LOG_WARNING, "PES packet size mismatch\n"); in new_pes_packet()
1003 pes->flags |= AV_PKT_FLAG_CORRUPT; in new_pes_packet()
1008 if (pes->sub_st && pes->stream_type == 0x83 && pes->extended_stream_id == 0x76) in new_pes_packet()
1009 pkt->stream_index = pes->sub_st->index; in new_pes_packet()
1011 pkt->stream_index = pes->st->index; in new_pes_packet()
1012 pkt->pts = pes->pts; in new_pes_packet()
1013 pkt->dts = pes->dts; in new_pes_packet()
1015 pkt->pos = pes->ts_packet_pos; in new_pes_packet()
1016 pkt->flags = pes->flags; in new_pes_packet()
1018 pes->buffer = NULL; in new_pes_packet()
1019 reset_pes_packet_state(pes); in new_pes_packet()
1024 *sd = pes->stream_id; in new_pes_packet()
1036 static int read_sl_header(PESContext *pes, SLConfigDescr *sl, in read_sl_header() argument
1097 pes->dts = dts; in read_sl_header()
1099 pes->pts = cts; in read_sl_header()
1102 avpriv_set_pts_info(pes->st, sl->timestamp_len, 1, sl->timestamp_res); in read_sl_header()
1124 PESContext *pes = filter->u.pes_filter.opaque; in mpegts_push_data() local
1125 MpegTSContext *ts = pes->ts; in mpegts_push_data()
1133 if (pes->state == MPEGTS_PAYLOAD && pes->data_index > 0) { in mpegts_push_data()
1134 ret = new_pes_packet(pes, ts->pkt); in mpegts_push_data()
1139 reset_pes_packet_state(pes); in mpegts_push_data()
1141 pes->state = MPEGTS_HEADER; in mpegts_push_data()
1142 pes->ts_packet_pos = pos; in mpegts_push_data()
1146 switch (pes->state) { in mpegts_push_data()
1148 len = PES_START_SIZE - pes->data_index; in mpegts_push_data()
1151 memcpy(pes->header + pes->data_index, p, len); in mpegts_push_data()
1152 pes->data_index += len; in mpegts_push_data()
1155 if (pes->data_index == PES_START_SIZE) { in mpegts_push_data()
1158 if (pes->header[0] == 0x00 && pes->header[1] == 0x00 && in mpegts_push_data()
1159 pes->header[2] == 0x01) { in mpegts_push_data()
1161 code = pes->header[3] | 0x100; in mpegts_push_data()
1162 av_log(pes->stream, AV_LOG_TRACE, "pid=%x pes_code=%#x\n", pes->pid, in mpegts_push_data()
1164 pes->stream_id = pes->header[3]; in mpegts_push_data()
1166 if ((pes->st && pes->st->discard == AVDISCARD_ALL && in mpegts_push_data()
1167 (!pes->sub_st || in mpegts_push_data()
1168 pes->sub_st->discard == AVDISCARD_ALL)) || in mpegts_push_data()
1173 if (!pes->st) { in mpegts_push_data()
1179 pes->st = avformat_new_stream(ts->stream, NULL); in mpegts_push_data()
1180 if (!pes->st) in mpegts_push_data()
1182 pes->st->id = pes->pid; in mpegts_push_data()
1183 mpegts_set_stream_info(pes->st, pes, 0, 0); in mpegts_push_data()
1186 pes->total_size = AV_RB16(pes->header + 4); in mpegts_push_data()
1189 if (!pes->total_size) in mpegts_push_data()
1190 pes->total_size = MAX_PES_PAYLOAD; in mpegts_push_data()
1193 pes->buffer = buffer_pool_get(ts, pes->total_size); in mpegts_push_data()
1194 if (!pes->buffer) in mpegts_push_data()
1201 pes->state = MPEGTS_PESHEADER; in mpegts_push_data()
1202 … if (pes->st->codecpar->codec_id == AV_CODEC_ID_NONE && !pes->st->internal->request_probe) { in mpegts_push_data()
1203 av_log(pes->stream, AV_LOG_TRACE, in mpegts_push_data()
1205 pes->pid, in mpegts_push_data()
1206 pes->stream_type); in mpegts_push_data()
1207 pes->st->internal->request_probe = 1; in mpegts_push_data()
1210 pes->pes_header_size = 6; in mpegts_push_data()
1211 pes->state = MPEGTS_PAYLOAD; in mpegts_push_data()
1212 pes->data_index = 0; in mpegts_push_data()
1218 pes->state = MPEGTS_SKIP; in mpegts_push_data()
1226 len = PES_HEADER_SIZE - pes->data_index; in mpegts_push_data()
1231 memcpy(pes->header + pes->data_index, p, len); in mpegts_push_data()
1232 pes->data_index += len; in mpegts_push_data()
1235 if (pes->data_index == PES_HEADER_SIZE) { in mpegts_push_data()
1236 pes->pes_header_size = pes->header[8] + 9; in mpegts_push_data()
1237 pes->state = MPEGTS_PESHEADER_FILL; in mpegts_push_data()
1241 len = pes->pes_header_size - pes->data_index; in mpegts_push_data()
1246 memcpy(pes->header + pes->data_index, p, len); in mpegts_push_data()
1247 pes->data_index += len; in mpegts_push_data()
1250 if (pes->data_index == pes->pes_header_size) { in mpegts_push_data()
1254 flags = pes->header[7]; in mpegts_push_data()
1255 r = pes->header + 9; in mpegts_push_data()
1256 pes->pts = AV_NOPTS_VALUE; in mpegts_push_data()
1257 pes->dts = AV_NOPTS_VALUE; in mpegts_push_data()
1259 pes->dts = pes->pts = ff_parse_pes_pts(r); in mpegts_push_data()
1262 pes->pts = ff_parse_pes_pts(r); in mpegts_push_data()
1264 pes->dts = ff_parse_pes_pts(r); in mpegts_push_data()
1267 pes->extended_stream_id = -1; in mpegts_push_data()
1275 (r + 2) <= (pes->header + pes->pes_header_size)) { in mpegts_push_data()
1278 pes->extended_stream_id = r[1]; in mpegts_push_data()
1283 pes->state = MPEGTS_PAYLOAD; in mpegts_push_data()
1284 pes->data_index = 0; in mpegts_push_data()
1285 if (pes->stream_type == 0x12 && buf_size > 0) { in mpegts_push_data()
1286 int sl_header_bytes = read_sl_header(pes, &pes->sl, p, in mpegts_push_data()
1288 pes->pes_header_size += sl_header_bytes; in mpegts_push_data()
1292 if (pes->stream_type == 0x15 && buf_size >= 5) { in mpegts_push_data()
1294 pes->pes_header_size += 5; in mpegts_push_data()
1298 if ( pes->ts->fix_teletext_pts in mpegts_push_data()
1299 && ( pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_TELETEXT in mpegts_push_data()
1300 || pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_SUBTITLE) in mpegts_push_data()
1304 while ((p = av_find_program_from_stream(pes->stream, p, pes->st->index))) { in mpegts_push_data()
1306 MpegTSFilter *f = pes->ts->pids[p->pcr_pid]; in mpegts_push_data()
1316 AVStream *pst = pes->stream->streams[p->stream_index[i]]; in mpegts_push_data()
1329pes->st->internal->pts_wrap_reference = st->internal->pts_wrap_reference; in mpegts_push_data()
1330pes->st->internal->pts_wrap_behavior = st->internal->pts_wrap_behavior; in mpegts_push_data()
1332 if (pes->dts == AV_NOPTS_VALUE || pes->dts < pcr) { in mpegts_push_data()
1333 pes->pts = pes->dts = pcr; in mpegts_push_data()
1334 … } else if (pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_TELETEXT && in mpegts_push_data()
1335 pes->dts > pcr + 3654 + 9000) { in mpegts_push_data()
1336 pes->pts = pes->dts = pcr + 3654 + 9000; in mpegts_push_data()
1337 … } else if (pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_SUBTITLE && in mpegts_push_data()
1338 pes->dts > pcr + 10*90000) { //10sec in mpegts_push_data()
1339 pes->pts = pes->dts = pcr + 3654 + 9000; in mpegts_push_data()
1347 if (pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_TELETEXT && in mpegts_push_data()
1349 av_log(pes->stream, AV_LOG_VERBOSE, in mpegts_push_data()
1353 pes->pid); in mpegts_push_data()
1354 pes->dts = pes->pts = AV_NOPTS_VALUE; in mpegts_push_data()
1360 if (pes->buffer) { in mpegts_push_data()
1361 if (pes->data_index > 0 && in mpegts_push_data()
1362 pes->data_index + buf_size > pes->total_size) { in mpegts_push_data()
1363 ret = new_pes_packet(pes, ts->pkt); in mpegts_push_data()
1366 pes->total_size = MAX_PES_PAYLOAD; in mpegts_push_data()
1367 pes->buffer = buffer_pool_get(ts, pes->total_size); in mpegts_push_data()
1368 if (!pes->buffer) in mpegts_push_data()
1371 } else if (pes->data_index == 0 && in mpegts_push_data()
1372 buf_size > pes->total_size) { in mpegts_push_data()
1375 buf_size = pes->total_size; in mpegts_push_data()
1377 memcpy(pes->buffer->data + pes->data_index, p, buf_size); in mpegts_push_data()
1378 pes->data_index += buf_size; in mpegts_push_data()
1384 if (!ts->stop_parse && pes->total_size < MAX_PES_PAYLOAD && in mpegts_push_data()
1385 pes->pes_header_size + pes->data_index == pes->total_size + PES_START_SIZE) { in mpegts_push_data()
1387 ret = new_pes_packet(pes, ts->pkt); in mpegts_push_data()
1406 PESContext *pes; in add_pes_stream() local
1409 pes = av_mallocz(sizeof(PESContext)); in add_pes_stream()
1410 if (!pes) in add_pes_stream()
1412 pes->ts = ts; in add_pes_stream()
1413 pes->stream = ts->stream; in add_pes_stream()
1414 pes->pid = pid; in add_pes_stream()
1415 pes->pcr_pid = pcr_pid; in add_pes_stream()
1416 pes->state = MPEGTS_SKIP; in add_pes_stream()
1417 pes->pts = AV_NOPTS_VALUE; in add_pes_stream()
1418 pes->dts = AV_NOPTS_VALUE; in add_pes_stream()
1419 tss = mpegts_open_pes_filter(ts, pid, mpegts_push_data, pes); in add_pes_stream()
1421 av_free(pes); in add_pes_stream()
1424 return pes; in add_pes_stream()
1699 PESContext *pes; in m4sl_cb() local
1707 pes = ts->pids[pid]->u.pes_filter.opaque; in m4sl_cb()
1708 st = pes->st; in m4sl_cb()
1712 pes->sl = mp4_descr[i].sl; in m4sl_cb()
2280 PESContext *pes; in pmt_cb() local
2375 pes = NULL; in pmt_cb()
2390 pes = ts->pids[pid]->u.pes_filter.opaque; in pmt_cb()
2391 if (ts->merge_pmt_versions && !pes->st) { in pmt_cb()
2394 pes->st = st; in pmt_cb()
2395 pes->stream_type = stream_type; in pmt_cb()
2396 pes->merged_st = 1; in pmt_cb()
2399 if (!pes->st) { in pmt_cb()
2400 pes->st = avformat_new_stream(pes->stream, NULL); in pmt_cb()
2401 if (!pes->st) in pmt_cb()
2403 pes->st->id = pes->pid; in pmt_cb()
2405 st = pes->st; in pmt_cb()
2409 pes = add_pes_stream(ts, pid, pcr_pid); in pmt_cb()
2410 if (ts->merge_pmt_versions && pes && !pes->st) { in pmt_cb()
2413 pes->st = st; in pmt_cb()
2414 pes->stream_type = stream_type; in pmt_cb()
2415 pes->merged_st = 1; in pmt_cb()
2418 if (pes && !pes->st) { in pmt_cb()
2419 st = avformat_new_stream(pes->stream, NULL); in pmt_cb()
2422 st->id = pes->pid; in pmt_cb()
2448 if (pes && !pes->stream_type) in pmt_cb()
2449 mpegts_set_stream_info(st, pes, stream_type, prog_reg_desc); in pmt_cb()
2473 if (pes && prog_reg_desc == AV_RL32("HDMV") && in pmt_cb()
2474 stream_type == 0x83 && pes->sub_st) { in pmt_cb()
2476 pes->sub_st->index); in pmt_cb()
2477 pes->sub_st->codecpar->codec_tag = st->codecpar->codec_tag; in pmt_cb()
2947 PESContext *pes = ts->pids[i]->u.pes_filter.opaque; in handle_packets() local
2948 av_buffer_unref(&pes->buffer); in handle_packets()
2949 pes->data_index = 0; in handle_packets()
2950 pes->state = MPEGTS_SKIP; /* skip until pes header */ in handle_packets()
3226 PESContext *pes = ts->pids[i]->u.pes_filter.opaque; in mpegts_read_packet() local
3227 if (pes->state == MPEGTS_PAYLOAD && pes->data_index > 0) { in mpegts_read_packet()
3228 ret = new_pes_packet(pes, pkt); in mpegts_read_packet()
3231 pes->state = MPEGTS_SKIP; in mpegts_read_packet()