On Sat, 30 Nov 2024 at 03:22, James Almer <jamr...@gmail.com> wrote: > > On 11/1/2024 2:21 PM, Clément Péron wrote: > > The Producer Reference time contains the source time when the frame > > has been produced. This is usefull in the muxer so propagate it. > > > > Signed-off-by: Clément Péron <peron.c...@gmail.com> > > --- > > libavcodec/rawenc.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/libavcodec/rawenc.c b/libavcodec/rawenc.c > > index 8c577006d9..f238c8e165 100644 > > --- a/libavcodec/rawenc.c > > +++ b/libavcodec/rawenc.c > > @@ -49,6 +49,8 @@ static av_cold int raw_encode_init(AVCodecContext *avctx) > > static int raw_encode(AVCodecContext *avctx, AVPacket *pkt, > > const AVFrame *frame, int *got_packet) > > { > > + AVFrameSideData *side_data; > > + > > int ret = av_image_get_buffer_size(frame->format, > > frame->width, frame->height, 1); > > > > @@ -78,6 +80,16 @@ static int raw_encode(AVCodecContext *avctx, AVPacket > > *pkt, > > } > > } > > *got_packet = 1; > > + > > + // Forward the PRFT to Mux > > + side_data = av_frame_get_side_data(frame, AV_FRAME_DATA_PRFT); > > What generated this side data? Blindly passing it through doesn't seem This side data is generated by the RTP decoder. see: https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/rtpdec.c#L635
> like a good idea. An encoder should only generate one with a timestamp > for when the frame finished encoding, or when the frame was first > submitted to the encoder, but not bypass some value from some unknown > source blindly. > > If what you want is a timestamp from when an encoder produced output, > then it should be added to the generic code in encode.c, after the > receive_packet() call, and attached to the output packet. If you want > one for when the frame was first fed to the encoder, then before > receive_packet() (and probably stored somewhere to be attached after the > packet is generated). > There's no need for a prft frame side data for this. I would like to have the PRFT from the RTP protocol, which in my case is generated by the camera. If I take the encoder timestamp it will add the network and encoding delay which I would like to avoid. I would like to have the output of multiple cameras to be sync. The Cameras are all NTP synced. I will describe this more explicitly in the next cover letter. > > > + if (side_data && side_data->size) { > > + uint8_t *buf = av_packet_new_side_data(pkt, AV_PKT_DATA_PRFT, > > side_data->size); > > + if (!buf) > > + return AVERROR(ENOMEM); > > + memcpy(buf, side_data->data, side_data->size); > > + } > > + > > return 0; > > } > > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".