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:
parent
bac447f190
commit
a8169321fd
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=248464
@ -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
47
multimedia/sabbu/Makefile
Normal 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>
|
3
multimedia/sabbu/distinfo
Normal file
3
multimedia/sabbu/distinfo
Normal 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
|
10
multimedia/sabbu/files/patch-common.h
Normal file
10
multimedia/sabbu/files/patch-common.h
Normal 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
|
||||
|
60
multimedia/sabbu/files/patch-configure
Normal file
60
multimedia/sabbu/files/patch-configure
Normal 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')
|
144
multimedia/sabbu/files/patch-video.cpp
Normal file
144
multimedia/sabbu/files/patch-video.cpp
Normal 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)
|
16
multimedia/sabbu/files/patch-video.h
Normal file
16
multimedia/sabbu/files/patch-video.h
Normal 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();
|
14
multimedia/sabbu/pkg-descr
Normal file
14
multimedia/sabbu/pkg-descr
Normal 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/
|
53
multimedia/sabbu/pkg-plist
Normal file
53
multimedia/sabbu/pkg-plist
Normal 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%%
|
Loading…
Reference in New Issue
Block a user