Originally committed as revision 18792 to svn://svn.ffmpeg.org/ffmpeg/trunk
Baptiste Coudurier authored on 2009/05/11 11:30:29... | ... |
@@ -619,6 +619,8 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, |
619 | 619 |
len = payload_size + header_len + 3; |
620 | 620 |
if (private_code != 0) |
621 | 621 |
len++; |
622 |
+ if (len > 0xffff) |
|
623 |
+ len = 0; |
|
622 | 624 |
*q++ = len >> 8; |
623 | 625 |
*q++ = len; |
624 | 626 |
val = 0x80; |
... | ... |
@@ -709,31 +711,7 @@ static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) |
709 | 709 |
} |
710 | 710 |
ts_st->first_pts_check = 0; |
711 | 711 |
|
712 |
- if (st->codec->codec_type == CODEC_TYPE_SUBTITLE) { |
|
713 |
- /* for subtitle, a single PES packet must be generated */ |
|
714 |
- mpegts_write_pes(s, st, buf, size, pts, AV_NOPTS_VALUE); |
|
715 |
- return 0; |
|
716 |
- } |
|
717 |
- |
|
718 |
- if (st->codec->codec_id == CODEC_ID_DIRAC) { |
|
719 |
- /* for Dirac, a single PES packet must be generated */ |
|
720 |
- mpegts_write_pes(s, st, buf, size, pts, dts); |
|
721 |
- return 0; |
|
722 |
- } |
|
723 |
- |
|
724 |
- if (st->codec->codec_id == CODEC_ID_MPEG2VIDEO || |
|
725 |
- st->codec->codec_id == CODEC_ID_MPEG1VIDEO) { |
|
726 |
- const uint8_t *p = pkt->data; |
|
727 |
- const uint8_t *end = pkt->data+pkt->size; |
|
728 |
- uint32_t state = -1; |
|
729 |
- while (p < end) { |
|
730 |
- p = ff_find_start_code(p, end, &state); |
|
731 |
- if (state == PICTURE_START_CODE) { |
|
732 |
- access_unit_index = p - 4; |
|
733 |
- break; |
|
734 |
- } |
|
735 |
- } |
|
736 |
- } if (st->codec->codec_id == CODEC_ID_H264) { |
|
712 |
+ if (st->codec->codec_id == CODEC_ID_H264) { |
|
737 | 713 |
if (pkt->size < 5 || AV_RB32(pkt->data) != 0x0000001) { |
738 | 714 |
av_log(s, AV_LOG_ERROR, "h264 bitstream malformated\n"); |
739 | 715 |
return -1; |
... | ... |
@@ -759,6 +737,14 @@ static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) |
759 | 759 |
return -1; |
760 | 760 |
} |
761 | 761 |
|
762 |
+ if (st->codec->codec_type == CODEC_TYPE_SUBTITLE || |
|
763 |
+ st->codec->codec_type == CODEC_TYPE_VIDEO) { |
|
764 |
+ // for video and subtitle, write a single pes packet |
|
765 |
+ mpegts_write_pes(s, st, buf, size, pts, dts); |
|
766 |
+ return 0; |
|
767 |
+ } |
|
768 |
+ |
|
769 |
+ // audio |
|
762 | 770 |
while (size > 0) { |
763 | 771 |
len = DEFAULT_PES_PAYLOAD_SIZE - ts_st->payload_index; |
764 | 772 |
if (len > size) |
... | ... |
@@ -15,8 +15,8 @@ bdb7484c68db722f66ba1630cf79844c *./tests/data/b-lavf.mpg |
15 | 15 |
0a7cc51de3da754ce36dffeeda290c45 *./tests/data/b-lavf.mxf_d10 |
16 | 16 |
5330989 ./tests/data/b-lavf.mxf_d10 |
17 | 17 |
./tests/data/b-lavf.mxf_d10 CRC=0xd241c8b6 |
18 |
-368950c12c4ba186725b757ec5625085 *./tests/data/b-lavf.ts |
|
19 |
-471316 ./tests/data/b-lavf.ts |
|
18 |
+88ed42ab4e1974c902b22ca17dfb3474 *./tests/data/b-lavf.ts |
|
19 |
+451764 ./tests/data/b-lavf.ts |
|
20 | 20 |
./tests/data/b-lavf.ts CRC=0xcc4948e1 |
21 | 21 |
1b28a16652bb8ac528b33f7478ca18b6 *./tests/data/b-lavf.swf |
22 | 22 |
335771 ./tests/data/b-lavf.swf |
... | ... |
@@ -3605,57 +3605,57 @@ ret:-1 st:-1 ts:-0.645825 flags:1 |
3605 | 3605 |
tests/data/b-lavf.ts |
3606 | 3606 |
ret: 0 st: 0 dts:0.660000 pts:0.700000 pos:564 size:24921 flags:1 |
3607 | 3607 |
ret: 0 st:-1 ts:-1.000000 flags:0 |
3608 |
-ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3608 |
+ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29704 size:22036 flags:1 |
|
3609 | 3609 |
ret: 0 st:-1 ts:1.894167 flags:1 |
3610 |
-ret: 0 st: 0 dts:1.881344 pts:-102481911520608.625000 pos:29328 size:3142 flags:1 |
|
3610 |
+ret: 0 st: 0 dts:1.881344 pts:-102481911520608.625000 pos:29704 size:852 flags:1 |
|
3611 | 3611 |
ret: 0 st: 0 ts:0.788333 flags:0 |
3612 |
-ret: 0 st: 0 dts:0.803344 pts:-102481911520608.625000 pos:68996 size:1524 flags:1 |
|
3612 |
+ret: 0 st: 0 dts:0.803344 pts:-102481911520608.625000 pos:66176 size:16769 flags:0 |
|
3613 | 3613 |
ret: 0 st: 0 ts:-0.317500 flags:1 |
3614 |
-ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3614 |
+ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:48880 size:22036 flags:1 |
|
3615 | 3615 |
ret: 0 st: 1 ts:2.576667 flags:0 |
3616 |
-ret: 0 st: 0 dts:2.590844 pts:-102481911520608.625000 pos:29328 size:10829 flags:1 |
|
3616 |
+ret: 0 st: 0 dts:2.590844 pts:-102481911520608.625000 pos:29704 size:7612 flags:1 |
|
3617 | 3617 |
ret: 0 st: 1 ts:1.470833 flags:1 |
3618 |
-ret: 0 st: 0 dts:1.468844 pts:-102481911520608.625000 pos:50948 size:14870 flags:0 |
|
3618 |
+ret: 0 st: 0 dts:1.468844 pts:-102481911520608.625000 pos:99264 size:13188 flags:1 |
|
3619 | 3619 |
ret: 0 st:-1 ts:0.365002 flags:0 |
3620 |
-ret: 0 st: 0 dts:0.374344 pts:-102481911520608.625000 pos:68996 size:13236 flags:1 |
|
3620 |
+ret: 0 st: 0 dts:0.374344 pts:-102481911520608.625000 pos:66176 size:12788 flags:1 |
|
3621 | 3621 |
ret: 0 st:-1 ts:-0.740831 flags:1 |
3622 |
-ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3622 |
+ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:29704 size:22036 flags:1 |
|
3623 | 3623 |
ret: 0 st: 0 ts:2.153333 flags:0 |
3624 |
-ret: 0 st: 0 dts:2.167344 pts:-102481911520608.625000 pos:29328 size:8612 flags:1 |
|
3624 |
+ret: 0 st: 0 dts:2.167344 pts:-102481911520608.625000 pos:29704 size:5935 flags:1 |
|
3625 | 3625 |
ret: 0 st: 0 ts:1.047500 flags:1 |
3626 |
-ret: 0 st: 0 dts:1.039844 pts:-102481911520608.625000 pos:83472 size:11965 flags:1 |
|
3626 |
+ret: 0 st: 0 dts:1.039844 pts:-102481911520608.625000 pos:82720 size:10704 flags:1 |
|
3627 | 3627 |
ret: 0 st: 1 ts:-0.058333 flags:0 |
3628 |
-ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:50948 size:22036 flags:1 |
|
3628 |
+ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:48880 size:22036 flags:1 |
|
3629 | 3629 |
ret: 0 st: 1 ts:2.835833 flags:1 |
3630 |
-ret: 0 st: 0 dts:2.832844 pts:-102481911520608.625000 pos:29328 size:4969 flags:1 |
|
3630 |
+ret: 0 st: 0 dts:2.832844 pts:-102481911520608.625000 pos:29704 size:1444 flags:1 |
|
3631 | 3631 |
ret: 0 st:-1 ts:1.730004 flags:0 |
3632 |
-ret: 0 st: 0 dts:1.738344 pts:-102481911520608.625000 pos:101520 size:6080 flags:1 |
|
3632 |
+ret: 0 st: 0 dts:1.738344 pts:-102481911520608.625000 pos:99264 size:3940 flags:1 |
|
3633 | 3633 |
ret: 0 st:-1 ts:0.624171 flags:1 |
3634 |
-ret: 0 st: 0 dts:0.616344 pts:-102481911520608.625000 pos:68996 size:7376 flags:1 |
|
3634 |
+ret: 0 st: 0 dts:0.616344 pts:-102481911520608.625000 pos:66176 size:6620 flags:1 |
|
3635 | 3635 |
ret: 0 st: 0 ts:-0.481667 flags:0 |
3636 |
-ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3636 |
+ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29704 size:22036 flags:1 |
|
3637 | 3637 |
ret: 0 st: 0 ts:2.412500 flags:1 |
3638 |
-ret: 0 st: 0 dts:2.403844 pts:-102481911520608.625000 pos:29328 size:2760 flags:1 |
|
3638 |
+ret: 0 st: 0 dts:2.403844 pts:-102481911520608.625000 pos:-1 size:13937 flags:0 |
|
3639 | 3639 |
ret: 0 st: 1 ts:1.306667 flags:0 |
3640 |
-ret: 0 st: 0 dts:1.309344 pts:-102481911520608.625000 pos:83472 size:3175 flags:1 |
|
3640 |
+ret: 0 st: 0 dts:1.309344 pts:-102481911520608.625000 pos:99264 size:1456 flags:1 |
|
3641 | 3641 |
ret: 0 st: 1 ts:0.200844 flags:1 |
3642 |
-ret: 0 st: 0 dts:0.187344 pts:-102481911520608.625000 pos:50948 size:19104 flags:1 |
|
3642 |
+ret: 0 st: 0 dts:0.187344 pts:-102481911520608.625000 pos:48880 size:18956 flags:1 |
|
3643 | 3643 |
ret: 0 st:-1 ts:-0.904994 flags:0 |
3644 |
-ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3644 |
+ret: 0 st: 0 dts:0.044344 pts:-102481911520608.625000 pos:29704 size:22036 flags:1 |
|
3645 | 3645 |
ret: 0 st:-1 ts:1.989173 flags:1 |
3646 |
-ret: 0 st: 0 dts:1.974844 pts:-102481911520608.625000 pos:68996 size:14472 flags:0 |
|
3646 |
+ret: 0 st: 0 dts:1.974844 pts:-102481911520608.625000 pos:29704 size:12103 flags:1 |
|
3647 | 3647 |
ret: 0 st: 0 ts:0.883344 flags:0 |
3648 |
-ret: 0 st: 0 dts:0.896844 pts:-102481911520608.625000 pos:83472 size:14905 flags:1 |
|
3648 |
+ret: 0 st: 0 dts:0.896844 pts:-102481911520608.625000 pos:82720 size:13784 flags:1 |
|
3649 | 3649 |
ret: 0 st: 0 ts:-0.222489 flags:1 |
3650 |
-ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:50948 size:22036 flags:1 |
|
3650 |
+ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:48880 size:22036 flags:1 |
|
3651 | 3651 |
ret: 0 st: 1 ts:2.671678 flags:0 |
3652 |
-ret: 0 st: 0 dts:2.684344 pts:-102481911520608.625000 pos:29328 size:9171 flags:1 |
|
3652 |
+ret: 0 st: 0 dts:2.684344 pts:-102481911520608.625000 pos:29704 size:5796 flags:1 |
|
3653 | 3653 |
ret: 0 st: 1 ts:1.565844 flags:1 |
3654 |
-ret: 0 st: 0 dts:1.562344 pts:-102481911520608.625000 pos:101520 size:11942 flags:1 |
|
3654 |
+ret: 0 st: 0 dts:1.562344 pts:-102481911520608.625000 pos:99264 size:10100 flags:1 |
|
3655 | 3655 |
ret: 0 st:-1 ts:0.460008 flags:0 |
3656 |
-ret: 0 st: 0 dts:0.467844 pts:-102481911520608.625000 pos:68996 size:10314 flags:1 |
|
3656 |
+ret: 0 st: 0 dts:0.467844 pts:-102481911520608.625000 pos:66176 size:9708 flags:1 |
|
3657 | 3657 |
ret: 0 st:-1 ts:-0.645825 flags:1 |
3658 |
-ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:29328 size:22036 flags:1 |
|
3658 |
+ret: 0 st: 0 dts:0.027844 pts:-102481911520608.625000 pos:29704 size:22036 flags:1 |
|
3659 | 3659 |
---------------- |
3660 | 3660 |
tests/data/b-lavf.ul |
3661 | 3661 |
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:0 size:1024 flags:1 |