Hi, > From: Nicolas Dufresne [mailto:nicolas.dufresne@xxxxxxxxxxxxx] > Sent: Thursday, January 14, 2016 8:02 PM > To: Kamil Debski; 'Wu-Cheng Li'; pawel@xxxxxxxxxx; > mchehab@xxxxxxxxxxxxxxx; hverkuil@xxxxxxxxx; crope@xxxxxx; > standby24x7@xxxxxxxxx; ricardo.ribalda@xxxxxxxxx; ao2@xxxxxx; > bparrot@xxxxxx; 'Andrzej Hajda' > Cc: linux-media@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux- > api@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] v4l: add > V4L2_CID_MPEG_VIDEO_FORCE_FRAME_TYPE. > > Le jeudi 14 janvier 2016 à 18:21 +0100, Kamil Debski a écrit : > > I had a look into the documentation of MFC. It is possible to force > > two types of a frame to be coded. > > The one is a keyframe, the other is a not coded frame. As I understand > > this is a type of frame that means that image did not change from > > previous frame. I am sure I seen it in an MPEG4 stream in a movie > > trailer. The initial board with the age rating is displayed for a > > couple of seconds and remains static. Thus there is one I-frame and a > > number of non-coded frames. > > > > That is the reason why the control was implemented in MFC as a menu > > and not a button. Thus the question remains - is it better to leave it > > as a menu, or should there be two (maybe more in the future) buttons? > > Then I believe we need both. Because with the menu, setting I-Frame, I > would expect to only receive keyframes from now-on. While the useful > feature we are looking for here, is to get the next buffer (or nearby) to be a > keyframe. It's the difference between creating an I-Frame only stream and > requesting a key-frame manually for recovery (RTP use case). > In this end, we should probably take that time to review the features we > have as we need: I think we had a discussion about this long, long time ago. Should it be deterministic which frame Is encoded as a key frame? Should it be the next queued frame, or the next processed frame? How to achieve this? I vaguely remember that we discussed per buffer controls on the mailing list, but I am not sure where the discussion went from there. > > - A way to trigger a key frame to be produce > - A way to produce a I-Frame only stream This control can be used to do this: - V4L2_CID_MPEG_VIDEO_GOP_SIZE (It is not well documented as I can see ;) ) + If set to 0 the encoder produces a stream with P only frames + if set to 1 the encoder produces a stream with I only frames + other values indicate the GOP size (I-frame interval) > - A way to set the key-frame distance (in frames) even though this could > possibly be emulated using the trigger. As described above V4L2_CID_MPEG_VIDEO_GOP_SIZE can be used to achieve this. > > cheers, >Nicolas Best wishes, -- Kamil Debski Samsung R&D Institute Poland -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html