Re: stabilization plugin
Georg Martius <[email protected]> Mon, 15 Sep 2008 08:26:58 +0200
| Newsgroups | gmane.comp.video.transcode.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, please find the patch for moving the code to the coding style. Created with cvs diff in the filter/stabilize directory. I also abstracted the linked list implementation as earlier suggested. Since the file is not yet in the CVS it is attached too. Eventually this might be moved to libtc. I have some questions: How is the help for filters supposed to work? I figured that I can use tcmodinfo. But filters like filter_levels suggests that I can pass the option help and it will print the help message, but it does not. I am also confused about the logging and verbosity. The functions tc_log_XXX do not filter but only format. That means that I always have to write if(verbose & TC_INFO) tc_log_info(.....)? What about changelog and todos for the plugin? I am happy for further comments. Regards, Georg On Wednesday 03 September 2008, Francesco Romani wrote: > On Tue, 2008-09-02 at 22:27 +0200, Georg Martius wrote: > > Hello, > > > > I have now a version of my video stabilization plugin ready. > > It would be create if it could be included in the CVS. I would also > > maintain it and provide further patches. > > Currently my documentation is at > > http://public.flexman.homeip.net/vid.stab/features.php > > Looks nice, merging is on the way. :) > > If you can send a further patch to adeguate the coding style to our > guidelines (in a timeframe of a few weeks), the new code will shipped in > 1.1.0; otherwise, it will be delayed to next release. > > > I have also some questions: Is there a way to use MMX and SSE extensions > > nicely within transcode? I have for example to add two arrays and I > > believe that could improve a lot. > > We've asm-accelerated common routines in aclib; except for that, we've > no a preferred nor a suggested way to go. > If you plan to add some code, do not forget to make it 64-bit safe. > > Best regards, -- ---- Georg Martius, Tel: +49 177 6413311 ----- ------- http://www.flexman.homeip.net ----------
linkedlist.h
(text/x-chdr, 2.2 KB)
/*
* linkedlist.h
*
* Copyright (C) Georg Martius - September 2008
*
* This file is part of transcode, a video stream processing tool
*
* transcode is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* transcode 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU Make; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef _LINKEDLIST_H
#define _LINKEDLIST_H
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
/* Classical linked list structure */
typedef struct _linkedlist {
void* item;
struct _linkedlist* next;
}LinkedList;
/* creates a new linked list with the given element (t is copied) */
LinkedList* linked_list_new(const void* t, unsigned int size);
/* creates a new linked list with the given element (t is directly used) */
LinkedList* linked_list_new_insitu(void* t);
/* adds a new element to the linked list (t is copied) and the new
* entry is returned
*/
LinkedList* linked_list_add(LinkedList* list, const void* t, unsigned int size);
/* adds a new element to the linked list (t is directly used) and the new
* entry is returned
*/
LinkedList* linked_list_add_insitu(LinkedList* list, void* t);
/* returns last element of the list*/
LinkedList* linked_list_last(LinkedList* list);
/* removes and deletes the given linked list element with data
* and returns the next pointer.
* possible usage:
* list->next=list_list_remove(list->next);
*/
LinkedList* linked_list_remove(LinkedList* list);
/* removes and deletes the following element with data
* in the given linked list and bends the next pointer.
*/
void linked_list_remove_next(LinkedList* list);
/* deletes the entire linked list (as many elements as there are!)*/
void linked_list_delete(LinkedList* list);
#endif // _LINKEDLIST_H
linkedlist.c
(text/x-csrc, 3.3 KB)
/* linkedlist.c
*
* Copyright (C) Georg Martius - September 2008
*
* This file is part of transcode, a video stream processing tool
*
* transcode is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* transcode 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU Make; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include "linkedlist.h"
#include "libtc/libtc.h"
// #include <stdlib.h>
#include <string.h>
#ifndef NEW
#define NEW(type,cnt) (type*)tc_malloc(sizeof(type)*cnt)
#define NEWBYTES(cnt) tc_malloc(cnt)
/* #define NEW(type,cnt) (type*)malloc(sizeof(type)*cnt)
#define NEWBYTES(cnt) malloc(cnt) */
#endif
#ifndef FREE
#define FREE(ptr) tc_free(ptr)
/* #define FREE(ptr) free(ptr) */
#endif
/* creates a new linked list with the given element (t is copied) */
LinkedList* linked_list_new(const void* t, unsigned int size){
void* t_new = NEWBYTES(size);
memcpy(t_new, t, size);
return linked_list_new_insitu(t_new);
}
/* creates a new linked list with the given element (t is directly used) */
LinkedList* linked_list_new_insitu(void* t){
LinkedList* list = NEW(LinkedList, 1);
list->next=0;
list->item = t;
return list;
}
/* adds(inserts) a new element to the linked list just after the given
entry. t is copied and the new entry is returned
*/
LinkedList* linked_list_add(LinkedList* list, const void* t, unsigned int size){
LinkedList* next = list->next;
LinkedList* new = linked_list_new(t, size);
new->next = next;
list->next = new;
return new;
}
/* adds a new element to the linked list (t is directly used) and the new
* entry is returned
*/
LinkedList* linked_list_add_insitu(LinkedList* list, void* t){
LinkedList* next = list->next;
LinkedList* new = linked_list_new_insitu(t);
new->next = next;
list->next = new;
return new;
}
/* returns last element of the list*/
LinkedList* linked_list_last(LinkedList* list){
LinkedList* p = list;
while(p && p->next){
p=p->next;
}
return p;
}
/* removes and deletes the given linked list element with data
* and returns the next pointer.
* possible usage:
* list->next=list_list_remove(list->next);
*/
LinkedList* linked_list_remove(LinkedList* list){
LinkedList* next = list->next;
if(list->item) FREE(list->item);
FREE(list);
return next;
}
/* removes and deletes the following element with data
* in the given linked list and bends the next pointer.
*/
void linked_list_remove_next(LinkedList* list){
LinkedList* next = list->next;
if(next){
LinkedList* nnext = next->next;
if(next->item) FREE(next->item);
FREE(next);
list->next = nnext;
}
}
/* deletes the entire linked list (as many elements as there are!)*/
void linked_list_delete(LinkedList* list){
do{
LinkedList* p = list->next;
if(list->item) FREE(list->item);
FREE(list);
list = p;
}while(list);
}
stabilize_patch_0.4-0.41.gz
(application/x-gzip, 20.5 KB) - not displayed
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQBIzgA17Y/IAAz6KBMRAvvOAJ4yjmbOtaWs7TkEy2k8rKGdB4kMywCdEoQo 1o38CfsS7eG5WXRKd8ZIDfY= =Y6t6 -----END PGP SIGNATURE-----