On Wed, Mar 07, 2018 at 11:37:00PM +0000, Josh Allmann wrote: > On 7 March 2018 at 18:03, Michael Niedermayer <mich...@niedermayer.cc> wrote: > > On Tue, Mar 06, 2018 at 12:47:15PM -0800, Josh Allmann wrote: > >> --- > >> doc/bitstream_filters.texi | 5 +++++ > >> libavcodec/noise_bsf.c | 12 ++++++++++++ > >> libavcodec/version.h | 2 +- > >> 3 files changed, 18 insertions(+), 1 deletion(-) > >> > >> diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi > >> index cfd81fa12d..a9f17f32ec 100644 > >> --- a/doc/bitstream_filters.texi > >> +++ b/doc/bitstream_filters.texi > >> @@ -399,6 +399,11 @@ every byte is modified. > >> A numeral string, whose value is related to how often packets will be > >> dropped. > >> Therefore, values below or equal to 0 are forbidden, and the lower the > >> more > >> frequent packets will be dropped, with 1 meaning every packet is dropped. > >> +@item keyframes > >> +A numeral string, whose value indicates the number of keyframe packets > >> that > >> +will be dropped from the beginning of the stream. This option will not add > >> +noise to the source data. If used with stream copy, then -copyinkf should > >> +be added to the output options as well. > >> @end table > >> > >> The following example applies the modification to every byte but does not > >> drop > >> diff --git a/libavcodec/noise_bsf.c b/libavcodec/noise_bsf.c > >> index 84b94032ad..363ea4fc71 100644 > >> --- a/libavcodec/noise_bsf.c > >> +++ b/libavcodec/noise_bsf.c > >> @@ -32,6 +32,7 @@ typedef struct NoiseContext { > >> const AVClass *class; > >> int amount; > >> int dropamount; > >> + int keyframes; > >> unsigned int state; > >> } NoiseContext; > >> > >> @@ -49,6 +50,13 @@ static int noise(AVBSFContext *ctx, AVPacket *out) > >> if (ret < 0) > >> return ret; > >> > >> + if (s->keyframes > 0 && in->flags & AV_PKT_FLAG_KEY) { > >> + s->keyframes--; > >> + if (!s->keyframes) s->keyframes = -1; > >> + av_packet_free(&in); > >> + return AVERROR(EAGAIN); > >> + } > > > > Thanks for the feedback. >
> > I think keyframe should work like dropamount, that is randomly. > > > > a non random droping could be added, maybe by the user specifying in > > a list what to drop. > > That would be more powerfull and flexible but probably not much harder > > Something like this? > > noise=keyframes=1,3,5,7 > > in order to drop the 1st, 3rd, 5th and 7th keyframes? yes something like this > > > also keeping keyframes and dropamount behave the same > > is more consistent > > > > Do you mean more consistent with respect to the 'amount' param of added noise, > as opposed to the patch's behavior of skipping noise if the 'keyframes' param > is > present? both. i meant the param but as you mention the skiping, that doesnt seem expected by a user either so it likely would be confusing. thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB It is dangerous to be right in matters on which the established authorities are wrong. -- Voltaire
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel