On 19/11/18 18:14, Jinbo Li wrote:
> Hello,
>
> Hello, I have an issue on implementing hardware encoding on raspberry pi by
> using openmax. The problem is that I always get wrong time stamp in my
> AVpacket even right after it gets initialized, the time stamp was always
> assigned to be 634 (seems to be the numerator of time base) and it does not
> change overtime. I have run this code on my another Ubuntu laptop, it doesn't
> have this issue for the printf.
>
> code:
>
> AVPacket pkt;
> printf("0-time stamp = %ld, enc = %d/%d st = %d/%d\n", pkt.pts,
> encoder_ctx->time_base.num,encoder_ctx->time_base.den,
> fmt_encoder_ctx->streams[video_stream]->time_base.num,
> fmt_encoder_ctx->streams[video_stream]->time_base.den);
> printf("avframe time stamp = %ld\n", sw_frame->pts);
> av_init_packet(&pkt);
> printf("1-time stamp = %ld, enc = %d/%d st = %d/%d\n", pkt.pts,
> encoder_ctx->time_base.num,encoder_ctx->time_base.den,
> fmt_encoder_ctx->streams[video_stream]->time_base.num,
> fmt_encoder_ctx->streams[video_stream]->time_base.den);
>
> result:
>
> 0-time stamp = 634, enc = 1907363872/0 st = 634/19001
> 1-time stamp = 634, enc = 0/-2147483648 st = 634/19001
> ...(the printed time stamp is always 634 below)
The timestamp is not a long, so you're invoking undefined behaviour and the
printed numbers are meaningless. You want PRId64 for printing timestamps.
- Mark
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user