1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-01 05:45:45 +00:00

program used to "time" subtitles:

* Any WAVE file can be used for timing
* Reads/Writes SSA (Sub Station Alpha) and ASS (Advanced Sub Station) formats.
* Instant preview of subtitle with all effects
* Ability to place subtitles visually (Needs more testing)
* Ability to mute specific channel
* Ability to open alternate views of the same wave
* Ability to mark key frames from a video on the waveform
* Ability to save Workspace (saves information such as currently opened sound,
  video files and position in the wave)
* Ability to format script on save
* "Code Hiding"

WWW: http://sourceforge.net/projects/sabbu/
This commit is contained in:
Dirk Meyer 2010-01-24 09:53:05 +00:00
parent bac447f190
commit a8169321fd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=248464
9 changed files with 348 additions and 0 deletions

View File

@ -253,6 +253,7 @@
SUBDIR += replex
SUBDIR += rox-videothumbnail
SUBDIR += ruby-flvtool2
SUBDIR += sabbu
SUBDIR += schroedinger
SUBDIR += shell-fm
SUBDIR += smile

47
multimedia/sabbu/Makefile Normal file
View File

@ -0,0 +1,47 @@
# New ports collection makefile for: sabbu
# Date created: 2005-04-14
# Whom: dikr.meyer@dinoex.sub.org
#
# $FreeBSD$
#
PORTNAME= sabbu
PORTVERSION= 0.3.0
PORTREVISION= 5
CATEGORIES= multimedia
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/Sabbu%20${PORTVERSION}
MAINTAINER= dinoex@FreeBSD.org
COMMENT= Program used to time subtitles
BUILD_DEPENDS= pkg-config:${PORTSDIR}/devel/pkg-config
LIB_DEPENDS= avcodec.1:${PORTSDIR}/multimedia/ffmpeg \
sndfile:${PORTSDIR}/audio/libsndfile
USE_BZIP2= yes
USE_GMAKE= yes
USE_ICONV= yes
GNU_CONFIGURE= yes
USE_GNOME= gtk20
CFLAGS+= ${PTHREAD_CFLAGS} -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib ${PTHREAD_LIBS} -lswscale
CONFIGURE_ENV+= LDFLAGS="${LDFLAGS}"
.if defined(WITHOUT_NLS)
CONFIGURE_ARGS+= --disable-nls
PLIST_SUB+= WITH_NLS="@comment "
.else
USE_GETTEXT= yes
PLIST_SUB+= WITH_NLS=""
.endif
ASPELL_PORT?= textproc/aspell
.if !defined(WITHOUT_GTKSPELL)
LIB_DEPENDS+= gtkspell.0:${PORTSDIR}/textproc/gtkspell
PLIST_SUB+= WITH_ASPELL=""
.else
PLIST_SUB+= WITH_ASPELL="@comment "
.endif
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
MD5 (sabbu-0.3.0.tar.bz2) = c380b921301cb9cebac117783083f846
SHA256 (sabbu-0.3.0.tar.bz2) = e510cb2947d45ff6e8a2b5e470f90e1695919e6b3be09f721674b61155b88b98
SIZE (sabbu-0.3.0.tar.bz2) = 605499

View File

@ -0,0 +1,10 @@
--- Source/common.h.orig Wed Aug 10 17:29:30 2005
+++ Source/common.h Sun May 27 09:51:29 2007
@@ -31,4 +31,7 @@
#include "alloc.h"
#include "util.h"
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS 1
+#endif

View File

@ -0,0 +1,60 @@
--- configure.orig 2005-11-27 01:30:25.000000000 +0100
+++ configure 2008-05-04 10:42:17.000000000 +0200
@@ -3222,6 +3222,7 @@
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_declaration
+#include <stdlib.h>
int
main ()
{
@@ -6277,6 +6278,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <stdlib.h>
#include <ffmpeg/avformat.h>
int
main ()
@@ -6320,6 +6322,9 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+
+#define __STDC_CONSTANT_MACROS
+#include <stdlib.h>
#include <ffmpeg/avformat.h>
int
main ()
@@ -6385,6 +6390,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <stdlib.h>
#include <iconv.h>
int
main ()
@@ -6428,6 +6434,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <stdlib.h>
#include <iconv.h>
int
main ()
@@ -6912,6 +6919,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <stdlib.h>
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -7550,6 +7558,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <stdlib.h>
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')

View File

@ -0,0 +1,144 @@
--- Source/video.cpp.orig 2005-08-11 19:16:17.000000000 +0200
+++ Source/video.cpp 2010-01-24 10:30:13.000000000 +0100
@@ -74,9 +74,11 @@
}
#else
+extern "C" {
#ifndef _WINDOWS
#include <ffmpeg/avformat.h>
#include <ffmpeg/avcodec.h>
+#include <libswscale/swscale.h>
#else
void (*av_register_all)(void) = NULL;
int (*av_open_input_file)(AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap) = NULL;
@@ -99,6 +101,7 @@
int (*avpicture_alloc)(AVPicture *picture, int pix_fmt, int width, int height) = NULL;
void (*avpicture_free)(AVPicture *picture) = NULL;
#endif
+}
GModule *module_avformat = NULL;
@@ -213,7 +216,7 @@
for(i = 0; i < video->ic->nb_streams; i++)
{
- AVCodecContext *enc = &video->ic->streams[i]->codec;
+ AVCodecContext *enc = video->ic->streams[i]->codec;
if(enc->codec_type == CODEC_TYPE_VIDEO)
{
video->video_index = i;
@@ -227,7 +230,7 @@
throw kryError(_("The video file does not seem to contain a video stream."));
}
- enc = &video->ic->streams[video->video_index]->codec;
+ enc = video->ic->streams[video->video_index]->codec;
enc->debug_mv = 0;
enc->debug = 0;
enc->workaround_bugs = 1;
@@ -277,10 +280,16 @@
avpicture_free(pict);
}
+static struct SwsContext *img_convert_ctx;
+
int video_get_picture(struct video_ffmpeg *video, AVPicture *pict)
{
AVFrame *frame;
+#if 0
int dst_pix_fmt = PIX_FMT_RGBA32;
+#else
+ PixelFormat dst_pix_fmt = PIX_FMT_RGBA32;
+#endif
int got_picture;
int len;
int width, height;
@@ -291,9 +300,9 @@
frame = avcodec_alloc_frame();
while(1)
{
- len = avcodec_decode_video(&video->ic->streams[video->video_index]->codec,
- frame, &got_picture,
- video->last_pkt->data, video->last_pkt->size);
+ len = avcodec_decode_video(video->ic->streams[video->video_index]->codec,
+ frame, &got_picture,
+ video->last_pkt->data, video->last_pkt->size);
if(got_picture)
break;
@@ -302,15 +311,26 @@
return FALSE;
}
- width = video->ic->streams[video->video_index]->codec.width;
- height = video->ic->streams[video->video_index]->codec.height;
+ width = video->ic->streams[video->video_index]->codec->width;
+ height = video->ic->streams[video->video_index]->codec->height;
pict->data[0] = (uint8_t*) malloc(4 * width * height);
pict->linesize[0] = width * 4;
+#if 0
if(img_convert(pict, dst_pix_fmt,
- (AVPicture *) frame, video->ic->streams[video->video_index]->codec.pix_fmt,
+ (AVPicture *) frame, video->ic->streams[video->video_index]->codec->pix_fmt,
width, height) < 0)
+#else
+ img_convert_ctx = sws_getContext(width, height,
+ video->ic->streams[video->video_index]->codec->pix_fmt,
+ width, height,
+ dst_pix_fmt, SWS_BICUBIC, NULL, NULL, NULL);
+ if (sws_scale(img_convert_ctx, frame->data,
+ frame->linesize, 0,
+ height,
+ pict->data, pict->linesize) < 0)
+#endif
{
av_free(frame);
return FALSE;
@@ -323,17 +343,17 @@
int video_get_width(struct video_ffmpeg *video)
{
- return video->ic->streams[video->video_index]->codec.width;
+ return video->ic->streams[video->video_index]->codec->width;
}
int video_get_height(struct video_ffmpeg *video)
{
- return video->ic->streams[video->video_index]->codec.height;
+ return video->ic->streams[video->video_index]->codec->height;
}
double video_get_fps(struct video_ffmpeg *video)
{
- return (video->ic->streams[video->video_index]->r_frame_rate / (double) video->ic->streams[video->video_index]->r_frame_rate_base);
+ return (video->ic->streams[video->video_index]->r_frame_rate.num / (double) video->ic->streams[video->video_index]->r_frame_rate.den);
}
int64_t video_get_duration(struct video_ffmpeg *video)
@@ -348,7 +368,7 @@
free(video->last_pkt);
video->last_pkt = NULL;
}
- avcodec_close(&video->ic->streams[video->video_index]->codec);
+ avcodec_close(video->ic->streams[video->video_index]->codec);
av_close_input_file(video->ic);
}
@@ -376,11 +396,11 @@
if(av_seek_frame(video->ic, -1, target_time) < 0)
#endif
{
- g_warning("seek failed... %lld", target_time);
+ g_warning("seek failed... %lld", (long long) target_time);
return FALSE;
}
- avcodec_flush_buffers(&video->ic->streams[video->video_index]->codec);
+ avcodec_flush_buffers(video->ic->streams[video->video_index]->codec);
}
if(video->last_pkt)

View File

@ -0,0 +1,16 @@
--- Source/video.h.orig Thu Jul 14 17:52:07 2005
+++ Source/video.h Sun Jun 17 08:57:32 2007
@@ -23,11 +23,13 @@
};
#else
+extern "C" {
#ifndef _WINDOWS
#include <ffmpeg/avformat.h>
#else
#include "video_ffmpeg.h"
#endif
+}
#endif
void video_uninit();

View File

@ -0,0 +1,14 @@
program used to "time" subtitles:
* Any WAVE file can be used for timing
* Reads/Writes SSA (Sub Station Alpha) and ASS (Advanced Sub Station) formats.
* Instant preview of subtitle with all effects
* Ability to place subtitles visually (Needs more testing)
* Ability to mute specific channel
* Ability to open alternate views of the same wave
* Ability to mark key frames from a video on the waveform
* Ability to save Workspace (saves information such as currently opened sound,
video files and position in the wave)
* Ability to format script on save
* "Code Hiding"
WWW: http://sourceforge.net/projects/sabbu/

View File

@ -0,0 +1,53 @@
bin/sabbu
%%WITH_NLS%%share/locale/es/LC_MESSAGES/sabbu.mo
%%WITH_NLS%%share/locale/id/LC_MESSAGES/sabbu.mo
%%WITH_NLS%%share/locale/ja/LC_MESSAGES/sabbu.mo
%%WITH_NLS%%share/locale/pt_BR/LC_MESSAGES/sabbu.mo
%%WITH_NLS%%share/locale/pl/LC_MESSAGES/sabbu.mo
%%WITH_NLS%%share/locale/zh_CN/LC_MESSAGES/sabbu.mo
%%DATADIR%%/angle.png
%%DATADIR%%/arrow-down.png
%%DATADIR%%/arrow-right.png
%%DATADIR%%/focus-selected.png
%%DATADIR%%/gear.png
%%DATADIR%%/grab-times.png
%%DATADIR%%/karaoke_box.png
%%DATADIR%%/karaoke_line.png
%%DATADIR%%/lead-both.png
%%DATADIR%%/lead-in.png
%%DATADIR%%/lead-out.png
%%DATADIR%%/margin-left.png
%%DATADIR%%/margin-right.png
%%DATADIR%%/margin-vertical.png
%%DATADIR%%/play-last.png
%%DATADIR%%/play-selection.png
%%DATADIR%%/play-stop.png
%%DATADIR%%/play.png
%%DATADIR%%/sabbu.jpg
%%DATADIR%%/sarrow-center.png
%%DATADIR%%/sarrow-down-left.png
%%DATADIR%%/sarrow-down-right.png
%%DATADIR%%/sarrow-down.png
%%DATADIR%%/sarrow-left.png
%%DATADIR%%/sarrow-right.png
%%DATADIR%%/sarrow-up-left.png
%%DATADIR%%/sarrow-up-right.png
%%DATADIR%%/sarrow-up.png
%%DATADIR%%/scale-down.png
%%DATADIR%%/scale-up.png
%%DATADIR%%/scale-x.png
%%DATADIR%%/scale-y.png
%%DATADIR%%/search-indicator.png
%%DATADIR%%/show-keyframes.png
%%DATADIR%%/show-time.png
%%DATADIR%%/spacing.png
%%DATADIR%%/sync-scale.png
%%DATADIR%%/sync-scroll.png
%%DATADIR%%/sync-zoom.png
%%DATADIR%%/syntax.png
%%DATADIR%%/syntax_off.png
%%DATADIR%%/time-left-2.png
%%DATADIR%%/time-left.png
%%DATADIR%%/time-right-2.png
%%DATADIR%%/time-right.png
@dirrm %%DATADIR%%