On Tue, Apr 05, 2016 at 11:06:48PM +0200, Michael Niedermayer wrote: > On Tue, Apr 05, 2016 at 12:00:26PM -0700, Amancio Hasty 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 > > > > > > > Well, ffmpeg is very popular in the Raspberry community. For example, > > motionpie uses it for > > video monitoring;however, the encoding is done in software which limits its > > performance. > > > > So yes quite a bit number of users are waiting for hardware assist H264 > > encoding in ffmpeg. > > I see no harm in adding this, its a optional feature and apparently > theres a user base who wants this > > thus i intend to apply this patch and state so with this mail > if someone objects please state that clearly in a reply
from IRC: <wm4> miI'm still against it <wm4> s/mi/michaelni:/ so if you want this patch applied talk with wm4 [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Awnsering whenever a program halts or runs forever is On a turing machine, in general impossible (turings halting problem). On any real computer, always possible as a real computer has a finite number of states N, and will either halt in less than N cycles or never halt.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel