Date: Fri, 27 Apr 2018 13:57:39 +0000 (UTC) From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r468428 - head/multimedia/mlt/files Message-ID: <201804271357.w3RDvdpJ015665@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jbeich Date: Fri Apr 27 13:57:39 2018 New Revision: 468428 URL: https://svnweb.freebsd.org/changeset/ports/468428 Log: multimedia/mlt: unbreak with ffmpeg 4.0 consumer_avformat.c:2047:44: error: use of undeclared identifier 'AVFMT_RAWPICTURE' if ( video_st && !( oc->oformat->flags & AVFMT_RAWPICTURE ) ) for (;;) ^ consumer_avformat.c:837:16: error: use of undeclared identifier 'CODEC_FLAG_QSCALE' c->flags |= CODEC_FLAG_QSCALE; ^ filter_avresample.c:55:2: error: use of undeclared identifier 'ReSampleContext' ReSampleContext *resample = mlt_properties_get_data( filter_properties, "audio_resample", NULL ); ^ PR: 227726 Obtained from: upstream (mlt 6.6.0) Added: head/multimedia/mlt/files/patch-git_541b083 (contents, props changed) head/multimedia/mlt/files/patch-git_9a95592 (contents, props changed) head/multimedia/mlt/files/patch-git_9ec2ab9 (contents, props changed) Added: head/multimedia/mlt/files/patch-git_541b083 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/multimedia/mlt/files/patch-git_541b083 Fri Apr 27 13:57:39 2018 (r468428) @@ -0,0 +1,120 @@ +From 541b083252c85a4990851c76321fac0cca50f283 Mon Sep 17 00:00:00 2001 +From: Dan Dennedy <dan@dennedy.org> +Date: Sun, 26 Mar 2017 19:01:11 -0700 +Subject: [PATCH] Prefer the "AV" namespaced CODEC flags. + +Fixes build against libav master, which has removed the old flags. +--- + src/modules/avformat/consumer_avformat.c | 33 +++++++++++++++--------- + 1 file changed, 21 insertions(+), 12 deletions(-) + +diff --git src/modules/avformat/consumer_avformat.c src/modules/avformat/consumer_avformat.c +index 43d4e44e..8414f18a 100644 +--- src/modules/avformat/consumer_avformat.c ++++ src/modules/avformat/consumer_avformat.c +@@ -1,6 +1,6 @@ + /* + * consumer_avformat.c -- an encoder based on avformat +- * Copyright (C) 2003-2015 Meltytech, LLC ++ * Copyright (C) 2003-2017 Meltytech, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -55,6 +55,15 @@ + #define AV_CODEC_ID_MJPEG CODEC_ID_MJPEG + #endif + ++#ifndef AV_CODEC_FLAG_GLOBAL_HEADER ++#define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER ++#define AV_CODEC_FLAG_QSCALE CODEC_FLAG_QSCALE ++#define AV_CODEC_FLAG_INTERLACED_DCT CODEC_FLAG_INTERLACED_DCT ++#define AV_CODEC_FLAG_INTERLACED_ME CODEC_FLAG_INTERLACED_ME ++#define AV_CODEC_FLAG_PASS1 CODEC_FLAG_PASS1 ++#define AV_CODEC_FLAG_PASS2 CODEC_FLAG_PASS2 ++#endif ++ + #define MAX_AUDIO_STREAMS (8) + #define AUDIO_ENCODE_BUFFER_SIZE (48000 * 2 * MAX_AUDIO_STREAMS) + #define AUDIO_BUFFER_SIZE (1024 * 42) +@@ -585,7 +594,7 @@ static AVStream *add_audio_stream( mlt_consumer consumer, AVFormatContext *oc, A + #endif + + if (oc->oformat->flags & AVFMT_GLOBALHEADER) +- c->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + // Allow the user to override the audio fourcc + if ( mlt_properties_get( properties, "atag" ) ) +@@ -611,7 +620,7 @@ static AVStream *add_audio_stream( mlt_consumer consumer, AVFormatContext *oc, A + int audio_qscale = mlt_properties_get_int( properties, "aq" ); + if ( audio_qscale > QSCALE_NONE ) + { +- c->flags |= CODEC_FLAG_QSCALE; ++ c->flags |= AV_CODEC_FLAG_QSCALE; + c->global_quality = FF_QP2LAMBDA * audio_qscale; + } + +@@ -710,7 +719,7 @@ static int open_audio( mlt_properties properties, AVFormatContext *oc, AVStream + if ( !strcmp( oc->oformat->name, "mp4" ) || + !strcmp( oc->oformat->name, "mov" ) || + !strcmp( oc->oformat->name, "3gp" ) ) +- c->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + } + else + { +@@ -842,7 +851,7 @@ static AVStream *add_video_stream( mlt_consumer consumer, AVFormatContext *oc, A + + if ( mlt_properties_get_double( properties, "qscale" ) > 0 ) + { +- c->flags |= CODEC_FLAG_QSCALE; ++ c->flags |= AV_CODEC_FLAG_QSCALE; + c->global_quality = FF_QP2LAMBDA * mlt_properties_get_double( properties, "qscale" ); + } + +@@ -859,16 +868,16 @@ static AVStream *add_video_stream( mlt_consumer consumer, AVFormatContext *oc, A + + // Some formats want stream headers to be seperate + if ( oc->oformat->flags & AVFMT_GLOBALHEADER ) +- c->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + // Translate these standard mlt consumer properties to ffmpeg + if ( mlt_properties_get_int( properties, "progressive" ) == 0 && + mlt_properties_get_int( properties, "deinterlace" ) == 0 ) + { + if ( ! mlt_properties_get( properties, "ildct" ) || mlt_properties_get_int( properties, "ildct" ) ) +- c->flags |= CODEC_FLAG_INTERLACED_DCT; ++ c->flags |= AV_CODEC_FLAG_INTERLACED_DCT; + if ( ! mlt_properties_get( properties, "ilme" ) || mlt_properties_get_int( properties, "ilme" ) ) +- c->flags |= CODEC_FLAG_INTERLACED_ME; ++ c->flags |= AV_CODEC_FLAG_INTERLACED_ME; + } + + // parse the ratecontrol override string +@@ -905,13 +914,13 @@ static AVStream *add_video_stream( mlt_consumer consumer, AVFormatContext *oc, A + // Setup dual-pass + i = mlt_properties_get_int( properties, "pass" ); + if ( i == 1 ) +- c->flags |= CODEC_FLAG_PASS1; ++ c->flags |= AV_CODEC_FLAG_PASS1; + else if ( i == 2 ) +- c->flags |= CODEC_FLAG_PASS2; ++ c->flags |= AV_CODEC_FLAG_PASS2; + #ifdef AV_CODEC_ID_H265 + if ( codec->id != AV_CODEC_ID_H265 ) + #endif +- if ( codec->id != AV_CODEC_ID_H264 && ( c->flags & ( CODEC_FLAG_PASS1 | CODEC_FLAG_PASS2 ) ) ) ++ if ( codec->id != AV_CODEC_ID_H264 && ( c->flags & ( AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2 ) ) ) + { + FILE *f; + int size; +@@ -926,7 +935,7 @@ static AVStream *add_video_stream( mlt_consumer consumer, AVFormatContext *oc, A + mlt_properties_from_utf8( properties, "_passlogfile", "_logfilename" ); + } + const char *filename = mlt_properties_get( properties, "_logfilename" ); +- if ( c->flags & CODEC_FLAG_PASS1 ) ++ if ( c->flags & AV_CODEC_FLAG_PASS1 ) + { + f = fopen( filename, "w" ); + if ( !f ) Added: head/multimedia/mlt/files/patch-git_9a95592 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/multimedia/mlt/files/patch-git_9a95592 Fri Apr 27 13:57:39 2018 (r468428) @@ -0,0 +1,260 @@ +From 9a955928355788e12054a22f1731a31e1a4cce34 Mon Sep 17 00:00:00 2001 +From: Dan Dennedy <dan@dennedy.org> +Date: Mon, 23 Oct 2017 20:17:40 -0700 +Subject: [PATCH] Remove filter_avresample - dropped by FFmpeg. + +--- + src/modules/avformat/Makefile | 1 - + src/modules/avformat/factory.c | 10 +- + src/modules/avformat/filter_avresample.c | 175 ----------------------- + src/modules/core/loader.ini | 2 +- + 4 files changed, 2 insertions(+), 186 deletions(-) + delete mode 100644 src/modules/avformat/filter_avresample.c + +diff --git src/modules/avformat/Makefile src/modules/avformat/Makefile +index 5d0e0e26..21bbe4cb 100644 +--- src/modules/avformat/Makefile ++++ src/modules/avformat/Makefile +@@ -16,7 +16,6 @@ OBJS = factory.o + + ifdef FILTERS + OBJS += filter_avcolour_space.o \ +- filter_avresample.o \ + filter_avdeinterlace.o \ + filter_swscale.o + CFLAGS += -DFILTERS +diff --git src/modules/avformat/factory.c src/modules/avformat/factory.c +index 7485a87a..785a6fe5 100644 +--- src/modules/avformat/factory.c ++++ src/modules/avformat/factory.c +@@ -1,6 +1,6 @@ + /* + * factory.c -- the factory method interfaces +- * Copyright (C) 2003-2016 Meltytech, LLC ++ * Copyright (C) 2003-2017 Meltytech, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -27,7 +27,6 @@ + extern mlt_consumer consumer_avformat_init( mlt_profile profile, char *file ); + extern mlt_filter filter_avcolour_space_init( void *arg ); + extern mlt_filter filter_avdeinterlace_init( void *arg ); +-extern mlt_filter filter_avresample_init( char *arg ); + extern mlt_filter filter_swscale_init( mlt_profile profile, char *arg ); + extern mlt_producer producer_avformat_init( mlt_profile profile, const char *service, char *file ); + extern mlt_filter filter_avfilter_init( mlt_profile, mlt_service_type, const char*, char* ); +@@ -125,10 +124,6 @@ static void *create_service( mlt_profile profile, mlt_service_type type, const c + return filter_avcolour_space_init( arg ); + if ( !strcmp( id, "avdeinterlace" ) ) + return filter_avdeinterlace_init( arg ); +-#if defined(FFUDIV) +- if ( !strcmp( id, "avresample" ) ) +- return filter_avresample_init( arg ); +-#endif + if ( !strcmp( id, "swscale" ) ) + return filter_swscale_init( profile, arg ); + #endif +@@ -409,9 +404,6 @@ MLT_REPOSITORY + MLT_REGISTER( filter_type, "avcolour_space", create_service ); + MLT_REGISTER( filter_type, "avcolor_space", create_service ); + MLT_REGISTER( filter_type, "avdeinterlace", create_service ); +-#if defined(FFUDIV) +- MLT_REGISTER( filter_type, "avresample", create_service ); +-#endif + MLT_REGISTER( filter_type, "swscale", create_service ); + + #ifdef AVFILTER +diff --git src/modules/avformat/filter_avresample.c src/modules/avformat/filter_avresample.c +deleted file mode 100644 +index 80f45128..00000000 +--- src/modules/avformat/filter_avresample.c ++++ /dev/null +@@ -1,175 +0,0 @@ +-/* +- * filter_avresample.c -- adjust audio sample frequency +- * Copyright (C) 2003-2014 Meltytech, LLC +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Lesser General Public +- * License as published by the Free Software Foundation; either +- * version 2.1 of the License, or (at your option) any later version. +- * +- * This library is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * Lesser General Public License for more details. +- * +- * You should have received a copy of the GNU Lesser General Public +- * License along with this library; if not, write to the Free Software +- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +- */ +- +-#include <framework/mlt_filter.h> +-#include <framework/mlt_frame.h> +-#include <framework/mlt_log.h> +- +-#include <stdio.h> +-#include <stdlib.h> +-#include <string.h> +- +-// ffmpeg Header files +-#include <libavformat/avformat.h> +-#include <libavutil/samplefmt.h> +- +-#if defined(FFUDIV) +- +-#define MAX_AUDIO_FRAME_SIZE (192000) // 1 second of 48khz 32bit audio +- +- +-/** Get the audio. +-*/ +- +-static int resample_get_audio( mlt_frame frame, void **buffer, mlt_audio_format *format, int *frequency, int *channels, int *samples ) +-{ +- // Get the filter service +- mlt_filter filter = mlt_frame_pop_audio( frame ); +- +- // Get the filter properties +- mlt_properties filter_properties = MLT_FILTER_PROPERTIES( filter ); +- +- mlt_service_lock( MLT_FILTER_SERVICE( filter ) ); +- +- // Get the resample information +- int output_rate = mlt_properties_get_int( filter_properties, "frequency" ); +- int16_t *sample_buffer = mlt_properties_get_data( filter_properties, "buffer", NULL ); +- +- // Obtain the resample context if it exists +- ReSampleContext *resample = mlt_properties_get_data( filter_properties, "audio_resample", NULL ); +- +- // If no resample frequency is specified, default to requested value +- if ( output_rate == 0 ) +- output_rate = *frequency; +- +- // Get the producer's audio +- int error = mlt_frame_get_audio( frame, buffer, format, frequency, channels, samples ); +- if ( error ) return error; +- +- // Return now if no work to do +- if ( output_rate != *frequency ) +- { +- // Will store number of samples created +- int used = 0; +- +- mlt_log_debug( MLT_FILTER_SERVICE(filter), "channels %d samples %d frequency %d -> %d\n", +- *channels, *samples, *frequency, output_rate ); +- +- // Do not convert to s16 unless we need to change the rate +- if ( *format != mlt_audio_s16 ) +- { +- *format = mlt_audio_s16; +- mlt_frame_get_audio( frame, buffer, format, frequency, channels, samples ); +- } +- +- // Create a resampler if nececessary +- if ( resample == NULL || *frequency != mlt_properties_get_int( filter_properties, "last_frequency" ) ) +- { +- // Create the resampler +- resample = av_audio_resample_init( *channels, *channels, output_rate, *frequency, +- AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, 16, 10, 0, 0.8 ); +- +- // And store it on properties +- mlt_properties_set_data( filter_properties, "audio_resample", resample, 0, ( mlt_destructor )audio_resample_close, NULL ); +- +- // And remember what it was created for +- mlt_properties_set_int( filter_properties, "last_frequency", *frequency ); +- } +- +- mlt_service_unlock( MLT_FILTER_SERVICE( filter ) ); +- +- // Resample the audio +- used = audio_resample( resample, sample_buffer, *buffer, *samples ); +- int size = used * *channels * sizeof( int16_t ); +- +- // Resize if necessary +- if ( used > *samples ) +- { +- *buffer = mlt_pool_realloc( *buffer, size ); +- mlt_frame_set_audio( frame, *buffer, *format, size, mlt_pool_release ); +- } +- +- // Copy samples +- memcpy( *buffer, sample_buffer, size ); +- +- // Update output variables +- *samples = used; +- *frequency = output_rate; +- } +- else +- { +- mlt_service_unlock( MLT_FILTER_SERVICE( filter ) ); +- } +- +- return error; +-} +- +-/** Filter processing. +-*/ +- +-static mlt_frame filter_process( mlt_filter filter, mlt_frame frame ) +-{ +- // Only call this if we have a means to get audio +- if ( mlt_frame_is_test_audio( frame ) == 0 ) +- { +- // Push the filter on to the stack +- mlt_frame_push_audio( frame, filter ); +- +- // Assign our get_audio method +- mlt_frame_push_audio( frame, resample_get_audio ); +- } +- +- return frame; +-} +- +-/** Constructor for the filter. +-*/ +- +-mlt_filter filter_avresample_init( char *arg ) +-{ +- // Create a filter +- mlt_filter filter = mlt_filter_new( ); +- +- // Initialise if successful +- if ( filter != NULL ) +- { +- // Calculate size of the buffer +- int size = MAX_AUDIO_FRAME_SIZE * sizeof( int16_t ); +- +- // Allocate the buffer +- int16_t *buffer = mlt_pool_alloc( size ); +- +- // Assign the process method +- filter->process = filter_process; +- +- // Deal with argument +- if ( arg != NULL ) +- mlt_properties_set( MLT_FILTER_PROPERTIES( filter ), "frequency", arg ); +- +- // Default to 2 channel output +- mlt_properties_set_int( MLT_FILTER_PROPERTIES( filter ), "channels", 2 ); +- +- // Store the buffer +- mlt_properties_set_data( MLT_FILTER_PROPERTIES( filter ), "buffer", buffer, size, mlt_pool_release, NULL ); +- } +- +- return filter; +-} +- +-#endif // defined(FFUDIV) +diff --git src/modules/core/loader.ini src/modules/core/loader.ini +index c586a176..b3a5653d 100644 +--- src/modules/core/loader.ini ++++ src/modules/core/loader.ini +@@ -15,7 +15,7 @@ resizer=movit.resize,resize + + # audio filters + channels=audiochannels +-resampler=resample,avresample ++resampler=resample + + # metadata filters + data=data_feed:attr_check Added: head/multimedia/mlt/files/patch-git_9ec2ab9 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/multimedia/mlt/files/patch-git_9ec2ab9 Fri Apr 27 13:57:39 2018 (r468428) @@ -0,0 +1,53 @@ +From 9ec2ab9780282412e42a39d14dced7deade201eb Mon Sep 17 00:00:00 2001 +From: Dan Dennedy <dan@dennedy.org> +Date: Mon, 23 Oct 2017 20:19:12 -0700 +Subject: [PATCH] Fix FFmpeg master removed AVFMT_RAWPICTURE. + +--- + .gitignore | 3 +++ + src/modules/avformat/consumer_avformat.c | 6 ++++++ + 2 files changed, 9 insertions(+) + +diff --git .gitignore .gitignore +index 01284bf3..3564a00f 100644 +--- .gitignore ++++ .gitignore +@@ -31,3 +31,6 @@ mlt-config + packages.dat + make.inc + src/examples/play ++*.dot ++*.rej ++ +diff --git src/modules/avformat/consumer_avformat.c src/modules/avformat/consumer_avformat.c +index b18b8752..49872225 100644 +--- src/modules/avformat/consumer_avformat.c ++++ src/modules/avformat/consumer_avformat.c +@@ -1817,6 +1817,7 @@ static void *consumer_thread( void *arg ) + } + } + ++#ifdef AVFMT_RAWPICTURE + if (oc->oformat->flags & AVFMT_RAWPICTURE) + { + // raw video case. The API will change slightly in the near future for that +@@ -1836,6 +1837,7 @@ static void *consumer_thread( void *arg ) + ret = av_write_frame(oc, &pkt); + } + else ++#endif + { + AVPacket pkt; + av_init_packet( &pkt ); +@@ -2029,7 +2031,11 @@ static void *consumer_thread( void *arg ) + } + + // Flush video ++#ifdef AVFMT_RAWPICTURE + if ( video_st && !( oc->oformat->flags & AVFMT_RAWPICTURE ) ) for (;;) ++#else ++ if ( video_st ) for (;;) ++#endif + { + AVCodecContext *c = video_st->codec; + AVPacket pkt;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804271357.w3RDvdpJ015665>