[Cin] New thread on bdwrite + mpeg2 HDV video
Andrew Randrianasulu
randrianasulu at gmail.com
Mon Nov 7 18:50:14 CET 2022
пн, 7 нояб. 2022 г., 20:30 Andrew Randrianasulu <randrianasulu at gmail.com>:
>
>
> пн, 7 нояб. 2022 г., 19:40 Andrew Randrianasulu <randrianasulu at gmail.com>:
>
>>
>>
>> пн, 7 нояб. 2022 г., 19:10 Andrew Randrianasulu <randrianasulu at gmail.com
>> >:
>>
>>> Because old thread now a bit too big for mobile gmail client.
>>>
>>> Yes, I'll try to see if it fails same way on my end.
>>>
>>> code seems to check first 100 frames
>>>
>>>
>>> 2528 static int field_probe(AVFormatContext *fmt_ctx, AVStream *st)
>>> 2529 {
>>> 2530 AVDictionary *copts = 0;
>>> 2531 //av_dict_copy(&copts, opts, 0);
>>> 2532 AVCodecID codec_id = st->codecpar->codec_id;
>>> 2533 #if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100)
>>> 2534 AVCodec *decoder = avcodec_find_decoder(codec_id);
>>> 2535 #endif
>>> 2536 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100)
>>> 2537 const AVCodec *decoder = avcodec_find_decoder(codec_id);
>>> 2538 #endif
>>> 2539 AVCodecContext *ctx = avcodec_alloc_context3(decoder);
>>> 2540 if( !ctx ) {
>>> 2541 fprintf(stderr,"codec alloc failed\n");
>>> 2542 return -1;
>>> 2543 }
>>> 2544 avcodec_parameters_to_context(ctx, st->codecpar);
>>> 2545 if( avcodec_open2(ctx, decoder, &copts) < 0 ) {
>>> 2546 fprintf(stderr,"codec open failed\n");
>>> 2547 return -1;
>>> 2548 }
>>> 2549 av_dict_free(&copts);
>>> 2550
>>> 2551 AVFrame *ipic = av_frame_alloc();
>>> 2552 AVPacket ipkt;
>>> 2553 av_init_packet(&ipkt);
>>> 2554 int ilaced = -1;
>>> 2555 for( int retrys=100; --retrys>=0 && ilaced<0; ) {
>>> 2556 av_packet_unref(&ipkt);
>>> 2557 int ret = av_read_frame(fmt_ctx, &ipkt);
>>> 2558 if( ret == AVERROR_EOF ) break;
>>> 2559 if( ret != 0 ) continue;
>>> 2560 if( ipkt.stream_index != st->index ) continue;
>>> 2561 if( !ipkt.data || !ipkt.size ) continue;
>>> 2562 ret = avcodec_send_packet(ctx, &ipkt);
>>> 2563 if( ret < 0 ) {
>>> 2564 fprintf(stderr, "avcodec_send_packet failed\n");
>>> 2565 break;
>>> 2566 }
>>> 2567 ret = avcodec_receive_frame(ctx, ipic);
>>> 2568 if( ret >= 0 ) {
>>> 2569 ilaced = ipic->interlaced_frame ? 1 : 0;
>>> 2570 break;
>>> 2571 }
>>> 2572 if( ret != AVERROR(EAGAIN) )
>>> 2573 fprintf(stderr, "avcodec_receive_frame failed %d\n", ret);
>>> 2574 }
>>> 2575 av_packet_unref(&ipkt);
>>> 2576 av_frame_free(&ipic);
>>> 2577 avcodec_free_context(&ctx);
>>> 2578 return ilaced;
>>>
>>> may be we can add flags to force interlaced vs progressive to bdwrite
>>> ... and/or debug why it fails.
>>>
>>>
>> sorry, not m2t or m2ts files were found on my main harddrive, so blind
>> shot!
>>
>> Terje, can you recompile bdwrite with attached patch and see if it
>> improves situation?
>>
>
>
> err, I think second patch also needed, because ilace in bdwrite is just
> 1/0/-1 not more detailed.
>
finally found m2t file, for me bdwrite does not complain but resulting file
is unplayable
note I used -b switch for new mkudffs so it works with 2048 blocks and not
default 512
root at slax:/tmp# mkudffs -b 2048 /tmp/newfilename.udfs 25915
filename=/tmp/newfilename.udfs
label=LinuxUDF
uuid=6369651cdf849fbf
blocksize=2048
blocks=25915
udfrev=2.01
start=0, blocks=16, type=ERASE
start=16, blocks=4, type=VRS
start=20, blocks=76, type=ERASE
start=96, blocks=16, type=MVDS
start=112, blocks=16, type=ERASE start=128,
blocks=4, type=LVID start=132, blocks=124,
type=ERASE start=256, blocks=1, type=ANCHOR
start=257, blocks=25400, type=PSPACE start=25657, blocks=1,
type=ERASE
start=25658, blocks=1, type=ANCHOR
start=25659, blocks=69, type=ERASE
start=25728, blocks=16, type=RVDS
start=25744, blocks=170, type=ERASE
start=25914, blocks=1, type=ANCHOR
root at slax:/tmp# mount -o loop /tmp/newfilename.udfs /mnt/test
root at slax:/tmp# bdwrite /mnt/test /home/guest/20081103140154.m2t
root at slax:/tmp# umount /mnt/test
playing result in many
root at slax:/tmp# mplayer -vo null br://tmp/newfilename.udfs
MPlayer UNKNOWN-11.2.0 (C) 2000-2022 MPlayer Team
do_connect: could not connect to socket connect:
No such file or directory
Failed to open LIRC support. You will not be able to use your remote
control.
Playing br://tmp/newfilename.udfs. The
hostname option must be an integer: tmp Struct bluray, field
hostname parsing error: tmp libavformat version 59.33.100
(internal) bluray.c:707: Skipping broken unit at
0 bluray.c:255: 00000.m2ts: no timestamp for
SPN 0 (got 0). clip 46909800-47511000.
bluray.c:707: Skipping broken unit at 0
bluray.c:707: Skipping broken unit at 6144
bluray.c:255: 00000.m2ts: no timestamp for SPN 0 (got 0). clip
46909800-47511000. bluray.c:707:
Skipping broken unit at 0 bluray.c:707:
Skipping broken unit at 6144 bluray.c:707: Skipping
broken unit at 12288 bluray.c:707: Skipping broken unit
at 18432 bluray.c:707: Skipping broken unit at 24576
{and so on}
>>
>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20221107/3df4a5c4/attachment.htm>
More information about the Cin
mailing list