> On Apr 4, 2016, at 10:41 AM, wm4 <nfx...@googlemail.com> wrote: > > On Mon, 4 Apr 2016 10:08:56 -0700 > Amancio Hasty <aha...@gmail.com <mailto:aha...@gmail.com>> wrote: > >>> On Mar 31, 2016, at 7:27 PM, Amancio Hasty <aha...@gmail.com> wrote: >>> >>> I am not a lawyer… >>> >>> >>> I updated the patch. vc264.c now has a the copyright notice embedded in >>> a volatile global so if a binary is compiled against vc264.o , the >>> copyright notice >>> can be displayed by: >>> strings ffmpeg | grep -i copyright >>> >>> LICENSE.md has been updated to include Broadcom’s copyright notice. >>> >>> A distribution of a binary that includes vc264.o should include LICENSE.md >>> and if >>> that is missing, the copyright notice can be displayed via the shell >>> command ‘strings’ . >>> >>> Amancio >>> <c-0001-added-support-for-hardware-assist-H264-video-encodin.patch> >>>> On Mar 22, 2016, at 12:12 PM, Lou Logan <l...@lrcd.com> wrote: >>>> >>>> On Mon, 21 Mar 2016 20:07:01 -0700, Amancio Hasty wrote: >>>> >>>>> From 874a72eec2a78f4935fea091003e534b5f8d5413 Mon Sep 17 00:00:00 2001 >>>>> From: Amancio Hasty <aha...@gmail.com> >>>>> Date: Mon, 21 Mar 2016 18:56:05 -0700 >>>>> Subject: [PATCH] added support for hardware assist H264 video encoding >>>>> for >>>>> the Raspberry Pi >>>>> >>>>> --- >>>>> configure | 12 ++ >>>>> libavcodec/Makefile | 1 + >>>>> libavcodec/allcodecs.c | 2 + >>>>> libavcodec/vc264.c | 387 >>>>> +++++++++++++++++++++++++++++++++++++++++++++++++ >>>>> 4 files changed, 402 insertions(+) >>>>> create mode 100644 libavcodec/vc264.c >>>>> >>>> [...] >>>>> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c >>>>> index 2a25d66..3c7bd9b 100644 >>>>> --- a/libavcodec/allcodecs.c >>>>> +++ b/libavcodec/allcodecs.c >>>>> @@ -74,6 +74,7 @@ void avcodec_register_all(void) >>>>> initialized = 1; >>>>> >>>> >>>> Nit: Whitespace on the line above should be removed. >>>> >>>> [...] >>>>> --- /dev/null >>>>> +++ b/libavcodec/vc264.c >>>>> @@ -0,0 +1,387 @@ >>>>> +/* H.264 hardware assist video encoding code taken from >>>>> + * raspberry's os : >>>>> + * /opt/vc/src/hello_pi/hello_encode/encode.c >>>>> + */ >>>>> + >>>>> +/* >>>>> +Copyright (c) 2012, Broadcom Europe Ltd >>>>> +Copyright (c) 2012, Kalle Vahlman <zuh@iki> >>>>> + Tuomas Kulve <tuo...@kulve.fi> >>>>> +All rights reserved. >>>>> + >>>>> +Redistribution and use in source and binary forms, with or without >>>>> +modification, are permitted provided that the following conditions are >>>>> met: >>>>> +* Redistributions of source code must retain the above copyright >>>>> + notice, this list of conditions and the following disclaimer. >>>>> + * Redistributions in binary form must reproduce the above copyright >>>>> + notice, this list of conditions and the following disclaimer in the >>>>> + documentation and/or other materials provided with the >>>>> distribution. >>>>> + * Neither the name of the copyright holder nor the >>>>> + names of its contributors may be used to endorse or promote >>>>> products >>>>> + derived from this software without specific prior written >>>>> permission. >>>>> + >>>>> +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS >>>>> IS" AND >>>>> +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >>>>> IMPLIED >>>>> +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE >>>>> +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE >>>>> LIABLE FOR ANY >>>>> +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL >>>>> DAMAGES >>>>> +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR >>>>> SERVICES; >>>>> +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED >>>>> AND >>>>> +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR >>>>> TORT >>>>> +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF >>>>> THIS >>>>> +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >>>> >>>> I wonder if any of the above legalese is compatible. Granted, I see a >>>> similar paragraph in "libavformat/aadec.c". >>>> >>>>> + * ffmpeg driver for hardware assist video H.264 encoding using >>>>> Broadcom's GPU >>>>> + * Copyright (C) 2016 Amancio Hasty aha...@gmail.com >>>>> + * >>>>> + * >>>>> + * This file is part of FFmpeg. >>>>> + * >>>>> + * FFmpeg 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. >>>>> + * >>>>> + * FFmpeg 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 FFmpeg; if not, write to the Free Software >>>>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >>>>> 02110-1301 USA >>>>> + * >>>>> + */ >>>>> + >>>>> + >>>>> +/** >>>>> + * @ file vc264.c >>>>> + * Broadcom bm2865's Visual Core hardware assist h264 using >>>>> + openMax interface to the GPU. >>>>> + >>>>> +*/ >>>>> + >>>>> +#include <stdio.h> >>>>> +#include <stdlib.h> >>>>> +#include <string.h> >>>>> +#define OMX_SKIP64BIT >>>>> +#include "bcm_host.h" >>>>> +#include "ilclient.h" >>>>> +#include "avcodec.h" >>>>> +#include "internal.h" >>>>> + >>>>> +typedef struct VC264Context { >>>>> + OMX_VIDEO_PARAM_PORTFORMATTYPE format; >>>>> + OMX_PARAM_PORTDEFINITIONTYPE def; >>>>> + COMPONENT_T *video_encode; >>>>> + COMPONENT_T *list[5]; >>>>> + OMX_BUFFERHEADERTYPE *buf; >>>>> + OMX_BUFFERHEADERTYPE *out; >>>>> + ILCLIENT_T *client; >>>>> + OMX_VIDEO_PARAM_BITRATETYPE bitrateType; >>>>> + int width; >>>>> + int height; >>>>> + int bit_rate; >>>>> +} VC264Context; >>>>> + >>>>> + >>>>> +static int vc264_init(AVCodecContext *avctx) { >>>>> + >>>>> + >>>>> + >>>>> + OMX_ERRORTYPE r; >>>>> + int error; >>>>> + >>>>> + >>>>> + >>>>> + VC264Context *vc = avctx->priv_data; >>>>> + >>>>> + vc->width = avctx->width; >>>>> + vc->height = avctx->height; >>>>> + vc->bit_rate = avctx->bit_rate; >>>>> + printf("vc264: bit rate %d \n", avctx->bit_rate); >>>>> +#if FF_API_CODED_FRAME >>>>> +FF_DISABLE_DEPRECATION_WARNINGS >>>>> + >>>>> + avctx->coded_frame = av_frame_alloc(); >>>>> + avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; >>>>> +FF_ENABLE_DEPRECATION_WARNINGS >>>>> +#endif >>>>> + >>>>> + >>>>> + memset(&vc->list, 0, sizeof(vc->list)); >>>>> + bcm_host_init(); >>>>> + if ((vc->client = ilclient_init()) == NULL) { >>>>> + return -3; >>>>> + } >>>>> + error = OMX_Init(); >>>>> + >>>>> + if (error != OMX_ErrorNone) { >>>>> + ilclient_destroy(vc->client); >>>>> + av_log(avctx,AV_LOG_ERROR,"in vc264_init OMX_Init failed "); >>>>> + return -4; >>>>> + } >>>>> + >>>>> + // create video_encode >>>>> + r = ilclient_create_component(vc->client, &vc->video_encode, (char *) >>>>> "video_encode", >>>>> + ILCLIENT_DISABLE_ALL_PORTS | >>>>> + ILCLIENT_ENABLE_INPUT_BUFFERS | >>>>> + ILCLIENT_ENABLE_OUTPUT_BUFFERS); >>>> >>>> Tabs should be converted to spaces. There are many instances of tabs >>>> being used in this patch. >>>> >>>> Others will have to provide a more technical review (not to mention >>>> possible additions docs, Changelog, MAINTAINERS, and >>>> libavcodec/version.h). >>>> _______________________________________________ >>>> ffmpeg-devel mailing list >>>> ffmpeg-devel@ffmpeg.org >>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >> >> >> Any comments on my patches? >> >> Developers in the Raspberry community have been waiting for a couple of >> years for such a >> patch to ffmpeg. >> > > I'm still against it, because it makes no sense to have a MMAL decoder, > but a OMX encoder. But whatever, if others think this is really > needed... > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel> When I have a little bit more time I promise that later on I can provide the ilclient encoding component.
I am an ancient FreeBSD hacker. Amancio _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel