Re: [FFmpeg-devel] [PATCH] avformat: Add multi protocol
On Thu, Jul 21, 2016 at 10:27:35PM -0300, James Almer wrote: > On 7/19/2016 1:42 PM, Michael Niedermayer wrote: > > fixed > > > > applied > > > > thx > > CClibavformat/teeproto.o > src/libavformat/teeproto.c: In function ‘tee_open’: > src/libavformat/teeproto.c:105:52: warning: argument to "sizeof" in "memset" > call is the same expression as the destination; did you mean to dereference > it? [-Wsizeof-pointer-memaccess] > memset(&c->child[c->child_count], 0, > sizeof(&c->child[c->child_count])); fixed thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB it is not once nor twice but times without number that the same ideas make their appearance in the world. -- Aristotle signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] doc/muxers: add hls_flags option description
2016-07-18 20:13 GMT+08:00 Steven Liu : > > Signed-off-by: Steven Liu > Reviewed-by: Moritz Barsnick > --- > doc/muxers.texi | 11 +++ > 1 file changed, 11 insertions(+) > > diff --git a/doc/muxers.texi b/doc/muxers.texi > index 1b99c7e..66539c1 100644 > --- a/doc/muxers.texi > +++ b/doc/muxers.texi > @@ -495,6 +495,17 @@ Will produce the playlist, @file{out.m3u8}, and a > single segment file, > Segment files removed from the playlist are deleted after a period of time > equal to the duration of the segment plus the duration of the playlist. > > +@item hls_flags round_durations > +Round the duration info in the playlist file segment info to integer > +values, instead of using floating point. > + > +@item hls_flags discont_starts > +Add the @code{#EXT-X-DISCONTINUITY} tag to the playlist, before the > +first segment's information. > + > +@item hls_flags omit_endlist > +Do not append the @code{EXT-X-ENDLIST} tag at the end of the playlist. > + > @item hls_flags split_by_time > If this flags is set, allow segments to start on frames other than > keyframes. > This improves behavior on some players when the time between keyframes is > -- > 2.7.4 (Apple Git-66) > ping ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] fate: add test for extrastereo filter
Hi there, Here is a patch for extrastereo filter. Regards, Petru Rares. From 24d3a378d839b7e0a165f8cd53eb28acd843cf54 Mon Sep 17 00:00:00 2001 From: Petru Rares Sincraian Date: Thu, 21 Jul 2016 07:21:01 +0200 Subject: [PATCH] fate: add test for extrastereo filter --- tests/fate/filter-audio.mak | 5 + tests/ref/fate/filter-extrastereo | 25 + 2 files changed, 30 insertions(+) create mode 100644 tests/ref/fate/filter-extrastereo diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak index 1a52320..b5663da 100644 --- a/tests/fate/filter-audio.mak +++ b/tests/fate/filter-audio.mak @@ -94,6 +94,11 @@ fate-filter-asetrate: tests/data/asynth-44100-2.wav fate-filter-asetrate: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav fate-filter-asetrate: CMD = framecrc -i $(SRC) -aframes 20 -af asetrate=2 +FATE_AFILTER-$(call FILTERDEMDECENCMUX, EXTRASTEREO, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-filter-extrastereo +fate-filter-extrastereo: tests/data/asynth-44100-2.wav +fate-filter-extrastereo: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav +fate-filter-extrastereo: CMD = framecrc -i $(SRC) -aframes 20 -af extrastereo=m=2 + tests/data/hls-list.m3u8: TAG = GEN tests/data/hls-list.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \ diff --git a/tests/ref/fate/filter-extrastereo b/tests/ref/fate/filter-extrastereo new file mode 100644 index 000..e43de2d --- /dev/null +++ b/tests/ref/fate/filter-extrastereo @@ -0,0 +1,25 @@ +#tb 0: 1/44100 +#media_type 0: audio +#codec_id 0: pcm_s16le +#sample_rate 0: 44100 +#channel_layout 0: 3 +0, 0, 0, 1024, 4096, 0x29e3eecf +0, 1024, 1024, 1024, 4096, 0x18390b96 +0, 2048, 2048, 1024, 4096, 0xc477fa99 +0, 3072, 3072, 1024, 4096, 0x3bc0f14f +0, 4096, 4096, 1024, 4096, 0x2379ed91 +0, 5120, 5120, 1024, 4096, 0xfd6a0070 +0, 6144, 6144, 1024, 4096, 0x0b01f4cf +0, 7168, 7168, 1024, 4096, 0x6716fd93 +0, 8192, 8192, 1024, 4096, 0x1840f25b +0, 9216, 9216, 1024, 4096, 0x9c1ffaf1 +0, 10240, 10240, 1024, 4096, 0xcbedefaf +0, 11264, 11264, 1024, 4096, 0x3e050390 +0, 12288, 12288, 1024, 4096, 0xb30e0090 +0, 13312, 13312, 1024, 4096, 0x26b8f75b +0, 14336, 14336, 1024, 4096, 0xd706e311 +0, 15360, 15360, 1024, 4096, 0x0c480138 +0, 16384, 16384, 1024, 4096, 0x6c9a0216 +0, 17408, 17408, 1024, 4096, 0x7abce54f +0, 18432, 18432, 1024, 4096, 0xda45f63f +0, 19456, 19456, 1024, 4096, 0x50d5ff87 -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/2] doc/muxers: improve hlsenc description
2016-07-18 20:15 GMT+08:00 Steven Liu : > Signed-off-by: Moritz Barsnick > --- > doc/muxers.texi | 12 ++-- > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/doc/muxers.texi b/doc/muxers.texi > index 66539c1..5873269 100644 > --- a/doc/muxers.texi > +++ b/doc/muxers.texi > @@ -396,8 +396,8 @@ which can be cyclic, for example if the @option{wrap} > option is > specified. > > @item hls_segment_filename @var{filename} > -Set the segment filename. Unless hls_flags single_file is set > @var{filename} > -is used as a string format with the segment number: > +Set the segment filename. Unless @code{hls_flags single_file} is set, > +@var{filename} is used as a string format with the segment number: > @example > ffmpeg in.nut -hls_segment_filename 'file%03d.ts' out.m3u8 > @end example > @@ -507,10 +507,10 @@ first segment's information. > Do not append the @code{EXT-X-ENDLIST} tag at the end of the playlist. > > @item hls_flags split_by_time > -If this flags is set, allow segments to start on frames other than > keyframes. > -This improves behavior on some players when the time between keyframes is > -inconsistent, but may make things worse on others, and can cause some > oddities > -during seeking. This flag should be used with hls_time option. > +Allow segments to start on frames other than keyframes. This improves > +behavior on some players when the time between keyframes is inconsistent, > +but may make things worse on others, and can cause some oddities during > +seeking. This flag should be used with the @code{hls_time} option. > > @item hls_playlist_type event > Emit @code{#EXT-X-PLAYLIST-TYPE:EVENT} in the m3u8 header. Forces > -- > 2.7.4 (Apple Git-66) > > ping ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] fate: add test for extrastereo filter
On Fri, Jul 22, 2016 at 10:53:41AM +, Petru Rares Sincraian wrote: > Hi there, > > > Here is a patch for extrastereo filter. > > > > Regards, > > Petru Rares. > fate/filter-audio.mak |5 + > ref/fate/filter-extrastereo | 25 + > 2 files changed, 30 insertions(+) > 45b0b1b0593d171de01bc76ad08f91ce3cda5986 > 0001-fate-add-test-for-extrastereo-filter.patch > From 24d3a378d839b7e0a165f8cd53eb28acd843cf54 Mon Sep 17 00:00:00 2001 > From: Petru Rares Sincraian > Date: Thu, 21 Jul 2016 07:21:01 +0200 > Subject: [PATCH] fate: add test for extrastereo filter applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Into a blind darkness they enter who follow after the Ignorance, they as if into a greater darkness enter who devote themselves to the Knowledge alone. -- Isha Upanishad signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avcodec/alsdec: implement floating point decoding
On Thu, Jul 21, 2016 at 6:18 PM, Michael Niedermayer wrote: > On Sun, Jul 17, 2016 at 12:06:03AM +0530, Umair Khan wrote: >> Hi, >> >> Patch attached. >> >> - Umair > >> libavcodec/Makefile |2 >> libavcodec/alsdec.c | 284 >> +- >> libavcodec/mlz.c | 171 + >> libavcodec/mlz.h | 69 ++ >> libavutil/softfloat_ieee754.h | 115 + >> 5 files changed, 638 insertions(+), 3 deletions(-) >> 0282267108d74681f1bff6b5e6a85c603ac7052e >> 0001-avcodec-alsdec-implement-floating-point-decoding.patch >> From 70e65b26cc3f84c9c664c30808b43a5e1cf16eaa Mon Sep 17 00:00:00 2001 >> From: Umair Khan >> Date: Sat, 16 Jul 2016 23:52:39 +0530 >> Subject: [PATCH 1/1] avcodec/alsdec: implement floating point decoding >> >> It conforms to RM22 version of the reference codec. >> >> Signed-off-by: Umair Khan >> --- >> libavcodec/Makefile | 2 +- >> libavcodec/alsdec.c | 284 >> +- >> libavcodec/mlz.c | 171 + >> libavcodec/mlz.h | 69 ++ >> libavutil/softfloat_ieee754.h | 115 + > > missing update to Changelog > > [...] >> @@ -1356,6 +1366,237 @@ static int revert_channel_correlation(ALSDecContext >> *ctx, ALSBlockData *bd, >> } >> >> >> +/** multiply two softfloats and handle the rounding off >> + */ >> +static SoftFloat_IEEE754 multiply(SoftFloat_IEEE754 a, SoftFloat_IEEE754 b) >> { >> +uint64_t mantissa_temp; >> +uint64_t mask_64; >> +int bit_count; >> +int cutoff_bit_count; >> +unsigned char last_2_bits; >> +unsigned int mantissa; >> +uint32_t return_val = 0; >> +int32_t sign; >> + >> +sign = a.sign ^ b.sign; >> + >> +// Multiply mantissa bits in a 64-bit register >> +mantissa_temp = (uint64_t)a.mant * (uint64_t)b.mant; >> + >> +// Count the valid bit count > >> +for (bit_count=48, mask_64=(uint64_t)0x1 << 47; !(mantissa_temp & >> mask_64) && mask_64; bit_count--, mask_64>>=1); > > this needs some newlines for readability > > >> + >> +// Round off >> +cutoff_bit_count = bit_count - 24; >> +if (cutoff_bit_count > 0) { >> +last_2_bits = (unsigned char)(((unsigned int)mantissa_temp >> >> (cutoff_bit_count - 1)) & 0x3 ); >> +if ((last_2_bits == 0x3) || ((last_2_bits == 0x1) && ((unsigned >> int)mantissa_temp & ((0x1UL << (cutoff_bit_count - 1)) - 1 { >> +// Need to round up >> +mantissa_temp += (uint64_t)0x1 << cutoff_bit_count; >> +} >> +} >> + >> +mantissa = (unsigned int)(mantissa_temp >> cutoff_bit_count); >> + >> +// Need one more shift? >> +if (mantissa & 0x0100ul) { >> +bit_count++; >> +mantissa >>= 1; >> +} >> + >> +if (!sign) { >> +return_val = 0x8000U; >> +} >> + >> +return_val |= (a.exp + b.exp + bit_count - 47) << 23; >> +return_val |= mantissa; >> +return av_bits2sf_ieee754(return_val); >> +} >> + >> + >> +/** Read and decode the floating point sample data >> + */ >> +static int read_diff_float_data(ALSDecContext *ctx, unsigned int ra_frame) { >> +AVCodecContext *avctx = ctx->avctx; >> +GetBitContext *gb = &ctx->gb; >> +SoftFloat_IEEE754 *acf = ctx->acf; >> +int *shift_value= ctx->shift_value; >> +int *last_shift_value = ctx->last_shift_value; >> +int *last_acf_mantissa = ctx->last_acf_mantissa; >> +int **raw_mantissa = ctx->raw_mantissa; >> +int *nbits = ctx->nbits; >> +unsigned char *larray = ctx->larray; >> +int frame_length= ctx->cur_frame_length; >> +SoftFloat_IEEE754 scale = av_int2sf_ieee754(0x1u, 23); >> +unsigned int partA_flag; >> +unsigned int highest_byte; >> +unsigned int shift_amp; >> +uint32_t tmp_32; >> +int use_acf; >> +int nchars; >> +int i; >> +int c; >> +long k; >> +long nbits_aligned; >> +unsigned long acc; >> +unsigned long j; >> +uint32_t sign; >> +uint32_t e; >> +uint32_t mantissa; >> + >> +skip_bits_long(gb, 32); //num_bytes_diff_float >> +use_acf = get_bits1(gb); >> + >> +if (ra_frame) { > >> +for (c = 0; c < avctx->channels; ++c) { >> +last_acf_mantissa[c] = 0; >> +last_shift_value[c] = 0; >> +} > > memset() > > >> +ff_mlz_flush_dict(ctx->mlz); >> +} >> + >> +for (c = 0; c < avctx->channels; ++c) { >> +if (use_acf) { >> +//acf_flag >> +if (get_bits1(gb)) { >> +tmp_32 = get_bits(gb, 23); >> +last_acf_mantissa[c] = tmp_32; >> +} else { >> +tmp_32 = last_acf_mantissa[c]; >> +} >> +acf[c] = av_bits2sf_ieee754(tmp_32); >> +} else { >> +acf[c] = FLOAT_1; >> +} >> + >> +
[FFmpeg-devel] [PATCH] MAINTAINERS: add myself to the project server
I've been helping out with the project servers' maintenance and migration to the new machine hosted in Telepoint's data center in Sofia, BG. Signed-off-by: Nikolay Aleksandrov --- note: the patch is against the master branch MAINTAINERS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index a7e606e39a35..6d4c9f906ace 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -43,7 +43,7 @@ Miscellaneous Areas === documentation Stefano Sabatini, Mike Melanson, Timothy Gu, Lou Logan -project server Árpád Gereöffy, Michael Niedermayer, Reimar Doeffinger, Alexander Strasser +project server Árpád Gereöffy, Michael Niedermayer, Reimar Doeffinger, Alexander Strasser, Nikolay Aleksandrov presets Robert Swain metadata subsystem Aurelien Jacobs release management Michael Niedermayer @@ -546,6 +546,7 @@ Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE Lou Logan 7D68 DC73 CBEF EABB 671A B6CF 621C 2E28 82F8 DC3A Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB Nicolas George24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93 +Nikolay Aleksandrov 8978 1D8C FB71 588E 4B27 EAA8 C4F0 B5FC E011 13B1 Panagiotis Issaris6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029 Peter RossA907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B Philip Langdale 5DC5 8D66 5FBA 3A43 18EC 045E F8D6 B194 6A75 682E -- 2.1.4 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/2] doc/muxers: improve hlsenc description
On Mon, Jul 18, 2016 at 08:15:25PM +0800, Steven Liu wrote: > Signed-off-by: Moritz Barsnick > --- > doc/muxers.texi | 12 ++-- > 1 file changed, 6 insertions(+), 6 deletions(-) applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Dictatorship: All citizens are under surveillance, all their steps and actions recorded, for the politicians to enforce control. Democracy: All politicians are under surveillance, all their steps and actions recorded, for the citizens to enforce control. signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] doc/muxers: add hls_flags option description
On Mon, Jul 18, 2016 at 08:13:46PM +0800, Steven Liu wrote: > Signed-off-by: Steven Liu > Reviewed-by: Moritz Barsnick > --- > doc/muxers.texi | 11 +++ > 1 file changed, 11 insertions(+) applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB It is what and why we do it that matters, not just one of them. signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] libx264: Increase x264 opts character limit to 4096
On Thu, Jul 21, 2016 at 06:52:41PM -0700, Sasi Inguva wrote: > Signed-off-by: Sasi Inguva > --- > libavcodec/libx264.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Concerning the gods, I have no means of knowing whether they exist or not or of what sort they may be, because of the obscurity of the subject, and the brevity of human life -- Protagoras signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] avdev/jack: remove duplicated dispatch macros
The macros were moved to compat/dispatch_semaphore/semaphore.h after a libav merge, and were never removed from jack.c --- libavdevice/jack.c | 10 -- 1 file changed, 10 deletions(-) diff --git a/libavdevice/jack.c b/libavdevice/jack.c index 34e2152..076078c 100644 --- a/libavdevice/jack.c +++ b/libavdevice/jack.c @@ -35,16 +35,6 @@ #include "timefilter.h" #include "avdevice.h" -#if HAVE_DISPATCH_DISPATCH_H -#include -#define sem_t dispatch_semaphore_t -#define sem_init(psem,x,val) *psem = dispatch_semaphore_create(val) -#define sem_post(psem)dispatch_semaphore_signal(*psem) -#define sem_wait(psem)dispatch_semaphore_wait(*psem, DISPATCH_TIME_FOREVER) -#define sem_timedwait(psem, val) dispatch_semaphore_wait(*psem, dispatch_walltime(val, 0)) -#define sem_destroy(psem) dispatch_release(*psem) -#endif - /** * Size of the internal FIFO buffers as a number of audio packets */ -- 2.7.4 (Apple Git-66) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avcodec/alsdec: implement floating point decoding
On Fri, Jul 22, 2016 at 06:22:30PM +0530, Umair Khan wrote: > On Thu, Jul 21, 2016 at 6:18 PM, Michael Niedermayer > wrote: > > On Sun, Jul 17, 2016 at 12:06:03AM +0530, Umair Khan wrote: [...] > >> +static int decode_string(MLZDict *dict, unsigned char *buff, int > >> string_code, int *first_char_code, unsigned long bufsize) { > >> +unsigned long count, offset; > >> +int current_code, parent_code, tmp_code; > >> + > >> +count= 0; > >> +current_code = string_code; > >> +*first_char_code = CODE_UNSET; > >> + > >> +while (count < bufsize) { > >> +switch (current_code) { > >> +case CODE_UNSET: > >> +return count; > >> +break; > >> +default: > >> +if (current_code < FIRST_CODE) { > >> +*first_char_code = current_code; > >> +buff[0] = current_code; > >> +count++; > >> +return count; > >> +} else { > >> +offset = dict[current_code].match_len - 1; > >> +tmp_code = dict[current_code].char_code; > >> +buff[offset] = tmp_code; > >> +count++; > >> +} > >> +current_code = dict[current_code].parent_code; > >> +if ((current_code < 0) || (current_code > (DIC_INDEX_MAX - > >> 1))) { > > > >> +av_log(NULL, AV_LOG_ERROR, "MLZ dic index error.\n"); > > > > it would be ideal if all av_log() would have a context instead of NULL > > How to go ahead with this? Should I create MLZContext or something? If > yes, could you please tell how? possible or you pass a void *context [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Everything should be made as simple as possible, but not simpler. -- Albert Einstein signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/2] avcodec/mpeg4_unpack_bframes_bsf: Copy packet props
From: Jan Sebechlebsky mpeg4_unpack_bframes_bsf bitstream filters constructs resulting packet using av_packet_from_data() function. This function however modifies only buffer (data) and leaves other fields untouched, so the content of other fields of the output packet is undefined. It is working with old BSF API, since old API filters just data and the packet fields are copied in av_apply_bitstream_filters from input packet. This change fixes the behaviour for the new BSF API. Signed-off-by: Jan Sebechlebsky --- libavcodec/mpeg4_unpack_bframes_bsf.c | 6 ++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c index 0615621..aee8ccb 100644 --- a/libavcodec/mpeg4_unpack_bframes_bsf.c +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c @@ -120,6 +120,12 @@ static int mpeg4_unpack_bframes_filter(AVBSFContext *ctx, AVPacket *out) if (nb_vop == 1 && s->b_frame_buf) { /* use frame from BSFContext */ +ret = av_packet_copy_props(out, in); +if (ret < 0) { +av_packet_free(&in); +return ret; +} + av_packet_from_data(out, s->b_frame_buf, s->b_frame_buf_size); if (in->size <= MAX_NVOP_SIZE) { /* N-VOP */ -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/2] avcodec/mpeg4_unpack_bframes_bsf: Check av_packet_from_data() return value
From: Jan Sebechlebsky Signed-off-by: Jan Sebechlebsky --- libavcodec/mpeg4_unpack_bframes_bsf.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c index aee8ccb..e227f58 100644 --- a/libavcodec/mpeg4_unpack_bframes_bsf.c +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c @@ -126,7 +126,11 @@ static int mpeg4_unpack_bframes_filter(AVBSFContext *ctx, AVPacket *out) return ret; } -av_packet_from_data(out, s->b_frame_buf, s->b_frame_buf_size); +ret = av_packet_from_data(out, s->b_frame_buf, s->b_frame_buf_size); +if (ret < 0) { +av_packet_free(&in); +return ret; +} if (in->size <= MAX_NVOP_SIZE) { /* N-VOP */ av_log(ctx, AV_LOG_DEBUG, "Skipping N-VOP.\n"); -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] avcodec/mpeg4_unpack_bframes_bsf: Copy packet props
On Fri, Jul 22, 2016 at 05:59:29PM +0200, sebechlebsky...@gmail.com wrote: > From: Jan Sebechlebsky > > mpeg4_unpack_bframes_bsf bitstream filters constructs > resulting packet using av_packet_from_data() function. > This function however modifies only buffer (data) and leaves > other fields untouched, so the content of other fields > of the output packet is undefined. > It is working with old BSF API, since old API filters > just data and the packet fields are copied in > av_apply_bitstream_filters from input packet. > > This change fixes the behaviour for the new BSF API. > > Signed-off-by: Jan Sebechlebsky > --- > libavcodec/mpeg4_unpack_bframes_bsf.c | 6 ++ > 1 file changed, 6 insertions(+) applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Those who are too smart to engage in politics are punished by being governed by those who are dumber. -- Plato signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/2] avcodec/mpeg4_unpack_bframes_bsf: Check av_packet_from_data() return value
On Fri, Jul 22, 2016 at 05:59:30PM +0200, sebechlebsky...@gmail.com wrote: > From: Jan Sebechlebsky > > Signed-off-by: Jan Sebechlebsky > --- > libavcodec/mpeg4_unpack_bframes_bsf.c | 6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB If you drop bombs on a foreign country and kill a hundred thousand innocent people, expect your government to call the consequence "unprovoked inhuman terrorist attacks" and use it to justify dropping more bombs and killing more people. The technology changed, the idea is old. signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] Outreachy 2016 december
On Wed, Jul 06, 2016 at 11:25:21PM +0200, Michael Niedermayer wrote: > Hi all > > The next Outreachy round starts soon > FFmpeg has till august 22 IIUC (https://www.gnome.org/outreachy/) > to express interrest to participate. > > We need an admin and backup admins. ping! > They need to create the wiki page(s) for this round, and make sure > the pages are in shape by the time applicants start pouring in. > make sure applicants questions (like "[FFmpeg-devel] need guidance") > get awnsered > recruite mentors, > secure funding (as in confirming with the community and stefano that > SPI/FFIS funding can be used for one slot or find another sponsor) @stefano, do we have funding for a slot in the next outreachy round? also if someone is against it speak now, before we contact Outreachy and state that we want to participate and have funding ... > contact the Outreachy admins and express that FFmpeg wants to > participate, ... > Reply to any questions the outreachy admins have > Make sure that during the project nothing goes wrong like a mentor > disappearing and if something goes wrong deal with it [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Freedom in capitalist society always remains about the same as it was in ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH]lavc/h264_ps: Be more verbose when truncating likely oversized pps.
Hi! Attached patch prints the size of the oversized pps when truncating. Please comment, Carl Eugen From 0ac76e23c283103441f372590eba24d14b2977c2 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Fri, 22 Jul 2016 19:24:15 +0200 Subject: [PATCH] lavc/h264_ps: Be more verbose when truncating likely oversized PPS. --- libavcodec/h264_ps.c |4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 3bcc6e1..7d1cf19 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -732,7 +732,9 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct pps->data_size = gb->buffer_end - gb->buffer; if (pps->data_size > sizeof(pps->data)) { -av_log(avctx, AV_LOG_WARNING, "Truncating likely oversized PPS\n"); +av_log(avctx, AV_LOG_WARNING, "Truncating likely oversized PPS " + "(%"SIZE_SPECIFIER" > %"SIZE_SPECIFIER")\n", + pps->data_size, sizeof(pps->data)); pps->data_size = sizeof(pps->data); } memcpy(pps->data, gb->buffer, pps->data_size); -- 1.7.10.4 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/2] avcodec/bsf: Check side data when setting BSF EOF flag.
From: Jan Sebechlebsky Set BSF EOF flag only if pkt == NULL or both data and side data are not present in packet. Signed-off-by: Jan Sebechlebsky --- I believe that side data should be checked too, and EOF flag set only when both data and side data are not present. I was testing new list BSF API I was working on, and with simple pass-though (empty list) BSF filter, some tests were failing because packets containing only side data were taken as EOF signal for bitsteam filter. Also, I've added comment about this behaviour in next patch. libavcodec/bsf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index 88b7f29..94f0122 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -172,7 +172,7 @@ int av_bsf_init(AVBSFContext *ctx) int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) { -if (!pkt || !pkt->data) { +if (!pkt || (!pkt->data && !pkt->side_data_elems)) { ctx->internal->eof = 1; return 0; } -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/2] avcodec/avcodec.h: Change av_bsf_send_packet() comment
From: Jan Sebechlebsky Specify av_bsf_packet() behaviour in case that the packet does not contain any data more precisely in the comment. Signed-off-by: Jan Sebechlebsky --- libavcodec/avcodec.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index ca8dba8..09ca734 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -5900,9 +5900,9 @@ int av_bsf_init(AVBSFContext *ctx); * * @param pkt the packet to filter. The bitstream filter will take ownership of * the packet and reset the contents of pkt. pkt is not touched if an error occurs. - * This parameter may be NULL, which signals the end of the stream (i.e. no more - * packets will be sent). That will cause the filter to output any packets it - * may have buffered internally. + * If the parameter is NULL, or packet does not contain any data or side data, + * it signals the end of the stream (i.e. no more packets will be sent). + * That will cause the filter to output any packets it may have buffered internally. * * @return 0 on success, a negative AVERROR on error. */ -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avfilter: Add max stats to PSNR log
On Thu, Jul 21, 2016 at 03:58:30PM -0700, Lucas Cooper wrote: > > Also that different information should possibly be optional > > as in version 2 format, and with that the first line could specify > > the version of the format > > Given that this would be a backwards incompatible change (anything assuming > every line is a stat line would break on the header), should I take > "optional" here to mean "controlled by a flag"? > > How about I add: > - A 'stats_version' option, integer, defaults to '1', which outputs the > existing format as is, without a version header. > - A second version '2', which outputs a version header, perhaps a list of > included fields? > - A 'log_raw' flag, which, when enabled, adds the raw error and max numbers > for each channel and averaged over all channels, from which MSE and PSNR > can be calculated. ok if possible, please split this in multiple self contained patches it sounds like this is has become more than one feature thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Observe your enemies, for they first find out your faults. -- Antisthenes signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] avcodec/bsf: Check side data when setting BSF EOF flag.
Le quintidi 5 thermidor, an CCXXIV, sebechlebsky...@gmail.com a écrit : > I believe that side data should be checked too, and > EOF flag set only when both data and side data are > not present. > > I was testing new list BSF API I was working on, > and with simple pass-though (empty list) BSF filter, > some tests were failing because packets containing only > side data were taken as EOF signal for bitsteam filter. > > Also, I've added comment about this behaviour in next > patch. I think we should be more strict, not less: pkt == NULL means EOF, pkt with data and/or side data is normal, and pkt != NULL without data and side data is forbidden and reserved for future extension. Regards, -- Nicolas George signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH v2] avcodec/bsf: Set EOF flag only if pkt == NULL
From: Jan Sebechlebsky Set BSF EOF flag only if pkt == NULL in av_bsf_send_packet(). Signed-off-by: Jan Sebechlebsky --- I agree, it seems cleaner that way. Thanks, please apply this version of patch then and ignore the patch changing the comment. Regards, Jan libavcodec/bsf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index 88b7f29..9b9ada7 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -172,7 +172,7 @@ int av_bsf_init(AVBSFContext *ctx) int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) { -if (!pkt || !pkt->data) { +if (!pkt) { ctx->internal->eof = 1; return 0; } -- 1.9.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2] avcodec/bsf: Set EOF flag only if pkt == NULL
Le quintidi 5 thermidor, an CCXXIV, sebechlebsky...@gmail.com a écrit : > From: Jan Sebechlebsky > > Set BSF EOF flag only if pkt == NULL in av_bsf_send_packet(). > > Signed-off-by: Jan Sebechlebsky > --- > I agree, it seems cleaner that way. > > Thanks, > please apply this version of patch then and ignore > the patch changing the comment. > > Regards, > Jan > > libavcodec/bsf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c > index 88b7f29..9b9ada7 100644 > --- a/libavcodec/bsf.c > +++ b/libavcodec/bsf.c > @@ -172,7 +172,7 @@ int av_bsf_init(AVBSFContext *ctx) > > int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) > { > -if (!pkt || !pkt->data) { > +if (!pkt) { It we make the case where pkt != NULL but no data nor side data forbidden, I would suggest to detect it. I know that others disagree, but I think an assert is the best solution for that: if the caller pass a forbidden value, it can expect an undefined behaviour, and an assert failure is the most sympathetic undefined behaviours for developers. > ctx->internal->eof = 1; > return 0; > } Regards, -- Nicolas George signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH v5 1/2] ffmpeg.c: copy video profile when using stream_copy
--- ffmpeg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ffmpeg.c b/ffmpeg.c index b29be1e..1367920 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -3019,6 +3019,7 @@ static int transcode_init(void) enc_ctx->width = dec_ctx->width; enc_ctx->height = dec_ctx->height; enc_ctx->has_b_frames = dec_ctx->has_b_frames; +enc_ctx->profile= dec_ctx->profile; if (ost->frame_aspect_ratio.num) { // overridden by the -aspect cli option sar = av_mul_q(ost->frame_aspect_ratio, -- 2.7.3 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH v5 0/2] libavformat/movenc: add dnxhr compatibility for apple players
changes since v4: * use profile to set codec tag to test ffmpeg -i lb_uhd.mxf -vcodec copy out.mov here are some samples: https://dl.dropboxusercontent.com/u/170952/ffmpeg_samples/mxf/UHD/lb_uhd.mxf https://dl.dropboxusercontent.com/u/170952/ffmpeg_samples/mxf/UHD/hqx_uhd.mxf Mark Reid (2): ffmpeg.c: copy video profile when using stream_copy libavformat/movenc: add dnxhr compatibility for apple players ffmpeg.c | 1 + libavformat/movenc.c | 31 ++- 2 files changed, 27 insertions(+), 5 deletions(-) -- 2.7.3 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH v5 2/2] libavformat/movenc: add dnxhr compatibility for apple players
--- libavformat/movenc.c | 31 ++- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index d614933..014b465 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -32,6 +32,7 @@ #include "isom.h" #include "avc.h" #include "libavcodec/ac3_parser.h" +#include "libavcodec/dnxhddata.h" #include "libavcodec/get_bits.h" #include "libavcodec/put_bits.h" #include "libavcodec/vc1_common.h" @@ -1070,11 +1071,7 @@ static int mov_write_avid_tag(AVIOContext *pb, MOVTrack *track) int cid; if (track->vos_data && track->vos_len > 0x29) { -if (track->vos_data[0] == 0x00 && -track->vos_data[1] == 0x00 && -track->vos_data[2] == 0x02 && -track->vos_data[3] == 0x80 && -(track->vos_data[4] == 0x01 || track->vos_data[4] == 0x02)) { +if (avpriv_dnxhd_parse_header_prefix(track->vos_data) != 0) { /* looks like a DNxHD bit stream */ interlaced = (track->vos_data[5] & 2); cid = AV_RB32(track->vos_data + 0x28); @@ -1099,6 +1096,18 @@ static int mov_write_avid_tag(AVIOContext *pb, MOVTrack *track) } avio_wb32(pb, 0); /* unknown */ +if (track->tag == MKTAG('A','V','d','h')) { +avio_wb32(pb, 32); +ffio_wfourcc(pb, "ADHR"); +ffio_wfourcc(pb, "0001"); +avio_wb32(pb, cid); +avio_wb32(pb, 0); /* unknown */ +avio_wb32(pb, 1); /* unknown */ +avio_wb32(pb, 0); /* unknown */ +avio_wb32(pb, 0); /* unknown */ +return 0; +} + avio_wb32(pb, 24); /* size */ ffio_wfourcc(pb, "APRG"); ffio_wfourcc(pb, "APRG"); @@ -1384,6 +1393,15 @@ static const struct { { AV_PIX_FMT_RGB48BE, MKTAG('b','4','8','r'), 48 }, }; +static int mov_get_dnxhd_codec_tag(AVFormatContext *s, MOVTrack *track) +{ + int tag = MKTAG('A','V','d','n'); + if (track->par->profile != FF_PROFILE_UNKNOWN && + track->par->profile != FF_PROFILE_DNXHD) + tag = MKTAG('A','V','d','h'); + return tag; +} + static int mov_get_rawvideo_codec_tag(AVFormatContext *s, MOVTrack *track) { int tag = track->par->codec_tag; @@ -1418,6 +1436,7 @@ static int mov_get_codec_tag(AVFormatContext *s, MOVTrack *track) track->par->codec_id == AV_CODEC_ID_RAWVIDEO || track->par->codec_id == AV_CODEC_ID_H263 || track->par->codec_id == AV_CODEC_ID_H264 || + track->par->codec_id == AV_CODEC_ID_DNXHD || track->par->codec_id == AV_CODEC_ID_MPEG2VIDEO || av_get_bits_per_sample(track->par->codec_id { // pcm audio if (track->par->codec_id == AV_CODEC_ID_DVVIDEO) @@ -1428,6 +1447,8 @@ static int mov_get_codec_tag(AVFormatContext *s, MOVTrack *track) tag = mov_get_mpeg2_xdcam_codec_tag(s, track); else if (track->par->codec_id == AV_CODEC_ID_H264) tag = mov_get_h264_codec_tag(s, track); +else if (track->par->codec_id == AV_CODEC_ID_DNXHD) +tag = mov_get_dnxhd_codec_tag(s, track); else if (track->par->codec_type == AVMEDIA_TYPE_VIDEO) { tag = ff_codec_get_tag(ff_codec_movvideo_tags, track->par->codec_id); if (!tag) { // if no mac fcc found, try with Microsoft tags -- 2.7.3 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/2] avformat: read id3v2 comment tags
From: Chris Moeller --- libavformat/id3v2.c | 44 1 file changed, 44 insertions(+) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 46b9394..c38c610 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -400,6 +400,47 @@ error: } /** + * Parse a comment tag. + */ +static void read_comm(AVFormatContext *s, AVIOContext *pb, int taglen, + AVDictionary **metadata) +{ +const char *key = "comment"; +uint8_t *dst; +int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_VAL; +int language; + +if (taglen < 4) +return; + +encoding = avio_r8(pb); +taglen--; + +language = avio_rl24(pb); +taglen -= 3; + +if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { +av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); +return; +} + +if (dst && dst[0]) { +key = (const char *) dst; +dict_flags |= AV_DICT_DONT_STRDUP_KEY; +} + +if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { +av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); +if (dict_flags & AV_DICT_DONT_STRDUP_KEY) +av_freep((void*)&key); +return; +} + +if (dst) +av_dict_set(metadata, key, (const char *) dst, dict_flags); +} + +/** * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct. */ static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen, @@ -905,6 +946,9 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, av_log(s, AV_LOG_WARNING, "Skipping %s ID3v2 frame %s.\n", type, tag); avio_skip(pb, tlen); +/* check for comment frame */ +} else if (!memcmp(tag, "COMM", 4)) { +read_comm(s, pbx, tlen, metadata); /* check for text tag or supported special meta tag */ } else if (tag[0] == 'T' || !memcmp(tag, "USLT", 4) || -- 2.7.4 (Apple Git-66) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/2] avformat: parse iTunes gapless information
From: Chris Moeller --- libavformat/mp3dec.c | 64 +++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index 56c7f8c..3055e2c 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -295,6 +295,53 @@ static void mp3_parse_vbri_tag(AVFormatContext *s, AVStream *st, int64_t base) } } +static void mp3_parse_itunes_tag(AVFormatContext *s, AVStream *st, MPADecodeHeader *c, int64_t base, int vbrtag_size, unsigned int *size, uint64_t *duration) +{ +uint32_t v; +AVDictionaryEntry *de; +MP3DecContext *mp3 = s->priv_data; +size_t length; +uint32_t zero, start_pad, end_pad; +uint64_t last_eight_frames_offset; +int i; + +if (!s->metadata || !(de = av_dict_get(s->metadata, "iTunSMPB", NULL, 0))) + return; + +length = strlen(de->value); + +/* Minimum length is one digit per field plus the whitespace, maximum length should depend on field type + * There are four fields we need in the first six, the rest are currently zero padding */ +if (length < (12 + 11) || length > (10 * 8 + 2 * 16 + 11)) +return; + +if (sscanf(de->value, "%x %x %x %llx %x %llx", &zero, &start_pad, &end_pad, duration, &zero, &last_eight_frames_offset) < 6) { +*duration = 0; +return; +} + +mp3->start_pad = start_pad; +mp3->end_pad = end_pad; +if (end_pad >= 528 + 1) +mp3->end_pad = end_pad - (528 + 1); +st->start_skip_samples = mp3->start_pad + 528 + 1; +av_log(s, AV_LOG_DEBUG, "pad %d %d\n", mp3->start_pad, mp3->end_pad); +if (!s->pb->seekable) +return; + +*size = (unsigned int) last_eight_frames_offset; +avio_seek(s->pb, base + vbrtag_size + last_eight_frames_offset, SEEK_SET); +for (i = 0; i < 8; i++) { +v = avio_rb32(s->pb); +if (ff_mpa_check_header(v) < 0) +return; +if (avpriv_mpegaudio_decode_header(c, v) != 0) +break; +*size += c->frame_size; +avio_skip(s->pb, c->frame_size - 4); +} +} + /** * Try to find Xing/Info/VBRI tags and compute duration from info therein */ @@ -303,8 +350,10 @@ static int mp3_parse_vbr_tags(AVFormatContext *s, AVStream *st, int64_t base) uint32_t v, spf; MPADecodeHeader c; int vbrtag_size = 0; +unsigned int size = 0; MP3DecContext *mp3 = s->priv_data; int ret; +uint64_t duration = 0; ffio_init_checksum(s->pb, ff_crcA001_update, 0); @@ -327,16 +376,29 @@ static int mp3_parse_vbr_tags(AVFormatContext *s, AVStream *st, int64_t base) mp3_parse_vbri_tag(s, st, base); if (!mp3->frames && !mp3->header_filesize) +vbrtag_size = 0; + +mp3_parse_itunes_tag(s, st, &c, base, vbrtag_size, &size, &duration); + +if (!mp3->frames && !size && !duration) return -1; /* Skip the vbr tag frame */ avio_seek(s->pb, base + vbrtag_size, SEEK_SET); -if (mp3->frames) +if (duration) +st->duration = av_rescale_q(duration, (AVRational){1, c.sample_rate}, st->time_base); +else if (mp3->frames) st->duration = av_rescale_q(mp3->frames, (AVRational){spf, c.sample_rate}, st->time_base); if (mp3->header_filesize && mp3->frames && !mp3->is_cbr) st->codecpar->bit_rate = av_rescale(mp3->header_filesize, 8 * c.sample_rate, mp3->frames * (int64_t)spf); +if (size) { +if (duration) +st->codecpar->bit_rate = av_rescale(size, 8 * c.sample_rate, duration); +else if (mp3->frames) +st->codecpar->bit_rate = av_rescale(size, 8 * c.sample_rate, mp3->frames * (int64_t)spf); +} return 0; } -- 2.7.4 (Apple Git-66) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] avformat: read id3v2 comment tags
Sorry for the noise, I made some poor assumptions. First, I wasn’t really paying attention when it mentioned the whitespace errors on apply, and didn’t correct them the first time. Second, I didn’t realize that it would ignore my —subject directive when sending the revised first patch. Now I learn that there is an —annotate switch. More knowledge for the future. The second patch depends on the first, since the relevant metadata is in a COMM frame. signature.asc Description: Message signed with OpenPGP using GPGMail ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/2] avformat: read id3v2 comment tags
From: Chris Moeller --- libavformat/id3v2.c | 44 1 file changed, 44 insertions(+) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 46b9394..c38c610 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -400,6 +400,47 @@ error: } /** + * Parse a comment tag. + */ +static void read_comm(AVFormatContext *s, AVIOContext *pb, int taglen, + AVDictionary **metadata) +{ +const char *key = "comment"; +uint8_t *dst; +int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_VAL; +int language; + +if (taglen < 4) +return; + +encoding = avio_r8(pb); +taglen--; + +language = avio_rl24(pb); +taglen -= 3; + +if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { +av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); +return; +} + +if (dst && dst[0]) { +key = (const char *) dst; +dict_flags |= AV_DICT_DONT_STRDUP_KEY; +} + +if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { +av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); +if (dict_flags & AV_DICT_DONT_STRDUP_KEY) +av_freep((void*)&key); +return; +} + +if (dst) +av_dict_set(metadata, key, (const char *) dst, dict_flags); +} + +/** * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct. */ static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen, @@ -905,6 +946,9 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, av_log(s, AV_LOG_WARNING, "Skipping %s ID3v2 frame %s.\n", type, tag); avio_skip(pb, tlen); +/* check for comment frame */ +} else if (!memcmp(tag, "COMM", 4)) { +read_comm(s, pbx, tlen, metadata); /* check for text tag or supported special meta tag */ } else if (tag[0] == 'T' || !memcmp(tag, "USLT", 4) || -- 2.7.4 (Apple Git-66) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 2/2] doc/examples/muxing: Fix packet duration
El 21/07/16 a las 20:02, Michael Niedermayer escribió: On Sun, Jul 17, 2016 at 04:10:39AM +0200, Michael Niedermayer wrote: Set needed fields in st->codec Fixes Ticket5684 Signed-off-by: Michael Niedermayer nevcairiel can you comment on this ? is this ok or should i add teh fields to codecpar or do you see some other solution ? [...] Ping. Can you CC nevcairiel, as he may not read this? The problem right now is that ffmpeg has an api that cannot work without deprecated warnings. -- Gonzalo Garramuño ggarr...@gmail.com ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v5 1/2] ffmpeg.c: copy video profile when using stream_copy
On Fri, Jul 22, 2016 at 01:30:14PM -0700, Mark Reid wrote: > --- > ffmpeg.c | 1 + > 1 file changed, 1 insertion(+) applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB During times of universal deceit, telling the truth becomes a revolutionary act. -- George Orwell signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/2] avformat: read id3v2 comment tags
On Sat, Jul 23, 2016, at 01:59 AM, kod...@gmail.com wrote: > [...] > > /** > + * Parse a comment tag. > + */ > +static void read_comm(AVFormatContext *s, AVIOContext *pb, int taglen, > + AVDictionary **metadata) This should probably be `read_comment`, it's not too long of a function name, and `read_comm` sounds a little ambiguous. > +{ > +const char *key = "comment"; > +uint8_t *dst; > +int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | > AV_DICT_DONT_STRDUP_VAL; > +int language; > + > +if (taglen < 4) > +return; > + > +encoding = avio_r8(pb); > +taglen--; > + > +language = avio_rl24(pb); > +taglen -= 3; Unless you intend to do checking of `encoding`/`language`, and proceed conditionally, this should probably combine both `taglen` statements. E.g. encoding = avio_r8(pb); language = avio_rl24(pb); tagline -= 4; > [...] As far I can tell, that's it for this patch (someone else might have some more comments). -- Josh ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] ffprobe missing string in code
Hi Michael, sorry for my mistake, updated patch in attachment. 21.07.2016, 22:01, "Michael Niedermayer" : > On Fri, Jul 15, 2016 at 09:02:09AM +0300, Dmitry Vagin wrote: >> Hello, FFmpeg-devel! >> >> ffprobe not show tags when set only '-show_entries programs' >> >> Patch in attachment. >> >> /Dmitry > >> ffprobe.c | 1 + >> 1 file changed, 1 insertion(+) >> bd733fe54031475470a40316396028bb91b735e2 patch-ffprobe.c >> --- ffprobe.c.orig 2016-04-29 17:08:17.0 +0500 >> +++ ffprobe.c 2016-07-15 10:30:37.701155000 +0500 >> @@ -3178,6 +3178,7 @@ >> SET_DO_SHOW(FRAME_TAGS, frame_tags); >> SET_DO_SHOW(PROGRAM_TAGS, program_tags); >> SET_DO_SHOW(STREAM_TAGS, stream_tags); >> + SET_DO_SHOW(PROGRAM_STREAM_TAGS, stream_tags); > > this patch is not against git master > > [...] > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > The bravest are surely those who have the clearest vision > of what is before them, glory and danger alike, and yet > notwithstanding go out to meet it. -- Thucydides /Dmitry --- ffprobe.c.orig 2016-07-22 10:47:15.0 +0500 +++ ffprobe.c 2016-07-22 10:48:48.560774000 +0500 @@ -3277,6 +3277,7 @@ SET_DO_SHOW(FRAME_TAGS, frame_tags); SET_DO_SHOW(PROGRAM_TAGS, program_tags); SET_DO_SHOW(STREAM_TAGS, stream_tags); +SET_DO_SHOW(PROGRAM_STREAM_TAGS, stream_tags); SET_DO_SHOW(PACKET_TAGS, packet_tags); if (do_bitexact && (do_show_program_version || do_show_library_versions)) { ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] configure: fix checking libopenjpeg on win32
On win32 libopenjpeg use __stdcall calling convention and linker can't find forward declared function: int opj_version() Signed-off-by: Aleksey Vasenev --- configure | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 1b41303..fc2416c 100755 --- a/configure +++ b/configure @@ -5681,10 +5681,10 @@ enabled libopencv && { check_header opencv2/core/core_c.h && require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } || require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; } enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion -enabled libopenjpeg && { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC || - check_lib openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC || - check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || - check_lib openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || +enabled libopenjpeg && { check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC || + check_lib2 openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC || + check_lib2 openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || + check_lib2 openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || die "ERROR: libopenjpeg not found"; } enabled libopenmpt&& require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create -- 2.9.0.windows.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] avformat/matroskadec: return AVERROR(EIO) rather than AVERROR_EOF on parse error
Signed-off-by: Sophia Wang --- libavformat/matroskadec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index f3d701f..c536605 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -3323,7 +3323,7 @@ static int matroska_read_packet(AVFormatContext *s, AVPacket *pkt) while (matroska_deliver_packet(matroska, pkt)) { int64_t pos = avio_tell(matroska->ctx->pb); if (matroska->done) -return AVERROR_EOF; +return avio_feof(s->pb) ? AVERROR_EOF : AVERROR(EIO); if (matroska_parse_cluster(matroska) < 0) matroska_resync(matroska, pos); } -- 2.8.0.rc3.226.g39d4020 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] Questions about Video Memory in qsv decoders
Dear all, I have a question when learning ffmpeg qsv decoder and Intel media sdk. The intel media sdk suggest to use Video Memory while doing Hardware decoding, use System Memory while doing Software decoding. FFmpeg only used System Memory to decode with qsv (Intel msdk) in file libavcodec/qsvdec.c. Is there any problem when use Video Memory? Actually, I am trying to add Video Memory to FFmpeg qsv. But too many problems. Is there any one can give me some instruction? Best Wishes, Yuxiao Zhang -- Yuxiao Zhang PHD candidate National Lab for Superconductivity Institute of Physics, Chinese Academy of Sciences (IOP,CAS) Address: No.8 3rd South Street, Zhongguancun, Haidian District, P. O. Box 603, Beijing, 100190, China Email: octopus...@gmail.com y.x.zh...@hotmail.com. Phone:+86 15201306254 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] Avoid sending packets to network when multicast ttl is 0 in udp
I'm sorry for that, it failed because it was prepared for release/2.8, this one should work on master. On Thu, Jul 21, 2016 at 3:48 AM, Michael Niedermayer wrote: > On Wed, Jul 20, 2016 at 05:38:10PM +0430, Omid Ghaffarinia wrote: >> Thanks for testing in mingw >> New patch attached, which should work now. > > still fails, even on ubuntu: > libavformat/udp.c: In function ‘udp_set_multicast_ttl’: > libavformat/udp.c:367:13: warning: passing argument 1 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but argument > is of type ‘struct sockaddr_storage *’ > libavformat/udp.c:367:13: warning: passing argument 2 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > libavformat/udp.c:367:13: error: too few arguments to function ‘udp_set_url’ > libavformat/udp.c:328:12: note: declared here > libavformat/udp.c:376:13: warning: passing argument 1 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but argument > is of type ‘struct sockaddr_storage *’ > libavformat/udp.c:376:13: warning: passing argument 2 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > libavformat/udp.c:376:13: error: too few arguments to function ‘udp_set_url’ > libavformat/udp.c:328:12: note: declared here > libavformat/udp.c: In function ‘udp_open’: > libavformat/udp.c:907:17: warning: passing argument 1 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but argument > is of type ‘struct sockaddr_storage *’ > libavformat/udp.c:907:17: warning: passing argument 2 of ‘udp_set_url’ from > incompatible pointer type [enabled by default] > libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > libavformat/udp.c:907:17: error: too few arguments to function ‘udp_set_url’ > libavformat/udp.c:328:12: note: declared here > > > on mingw64: > CC libavformat/udp.o > src/libavformat/udp.c: In function ‘udp_set_multicast_ttl’: > src/libavformat/udp.c:367:13: warning: passing argument 1 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but > argument is of type ‘struct sockaddr_storage *’ > src/libavformat/udp.c:367:13: warning: passing argument 2 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > src/libavformat/udp.c:367:13: error: too few arguments to function > ‘udp_set_url’ > src/libavformat/udp.c:328:12: note: declared here > src/libavformat/udp.c:376:13: warning: passing argument 1 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but > argument is of type ‘struct sockaddr_storage *’ > src/libavformat/udp.c:376:13: warning: passing argument 2 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > src/libavformat/udp.c:376:13: error: too few arguments to function > ‘udp_set_url’ > src/libavformat/udp.c:328:12: note: declared here > src/libavformat/udp.c: In function ‘udp_open’: > src/libavformat/udp.c:907:17: warning: passing argument 1 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct URLContext *’ but > argument is of type ‘struct sockaddr_storage *’ > src/libavformat/udp.c:907:17: warning: passing argument 2 of ‘udp_set_url’ > from incompatible pointer type [enabled by default] > src/libavformat/udp.c:328:12: note: expected ‘struct sockaddr_storage *’ but > argument is of type ‘const char *’ > src/libavformat/udp.c:907:17: error: too few arguments to function > ‘udp_set_url’ > src/libavformat/udp.c:328:12: note: declared here > make: *** [libavformat/udp.o] Error 1 > make: Target `all' not remade because of errors. > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > When the tyrant has disposed of foreign enemies by conquest or treaty, and > there is nothing more to fear from them, then he is always stirring up > some war or other, in order that the people may require a leader. -- Plato > > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > From f29e67b5702fbc6330127c7f9b57668d4e048473 Mon S