* osdmenu: video_filter for displaying and streaming a On Screen Display menu
* oss: audio output module using the OSS /dev/dsp interface
* packetizer_copy: Simple copy packetizer
+ * packetizer_dirac: Dirac video packetizer
* packetizer_h264: H264 video packetizer
* packetizer_mlp: MLP/TrueHD audio packetizer
* packetizer_mpeg4audio: MPEG4 audio packetizer
IBOutlet id o_specificTime_mi;
VLCFSPanel *o_fs_panel;
+ BOOL b_lockAspectRatio;
}
- (void)controlTintChanged;
- (id)voutView;
+- (BOOL)aspectRatioIsLocked;
- (IBAction)play:(id)sender;
- (IBAction)stop:(id)sender;
- (IBAction)telxTransparent:(id)sender;
- (IBAction)telxNavLink:(id)sender;
+- (IBAction)lockVideosAspectRatio:(id)sender;
- (IBAction)addSubtitleFile:(id)sender;
- (BOOL)keyEvent:(NSEvent *)o_event;
{
[super init];
o_fs_panel = [[VLCFSPanel alloc] init];
+ b_lockAspectRatio = YES;
return self;
}
return [[o_voutView retain] autorelease];
}
+- (BOOL)aspectRatioIsLocked
+{
+ return b_lockAspectRatio;
+}
+
- (IBAction)stop:(id)sender
{
intf_thread_t * p_intf = VLCIntf;
}
}
+- (IBAction)lockVideosAspectRatio:(id)sender
+{
+ if( [sender state] == NSOffState )
+ [sender setState: NSOnState];
+ else
+ [sender setState: NSOffState];
+
+ b_lockAspectRatio = !b_lockAspectRatio;
+}
+
- (IBAction)addSubtitleFile:(id)sender
{
NSInteger i_returnValue = 0;
if( input_AddSubtitle( p_input, [[[openPanel filenames] objectAtIndex: i] UTF8String], TRUE ) )
msg_Warn( VLCIntf, "unable to load subtitles from '%s'",
[[[openPanel filenames] objectAtIndex: i] UTF8String] );
- i++;
}
}
}
/* make (un)sensitive */
[o_parent setEnabled: ( val_list.p_list->i_count > 1 )];
+ /* Aspect Ratio */
+ if( [[o_parent title] isEqualToString: _NS("Aspect-ratio")] == YES )
+ {
+ NSMenuItem *o_lmi_tmp2;
+ o_lmi_tmp2 = [o_menu addItemWithTitle: _NS("Lock Aspect Ratio") action: @selector(lockVideosAspectRatio:) keyEquivalent: @""];
+ [o_lmi_tmp2 setTarget: self];
+ [o_lmi_tmp2 setEnabled: YES];
+ [o_lmi_tmp2 setState: b_lockAspectRatio];
+ [o_parent setEnabled: YES];
+ [o_menu addItem: [NSMenuItem separatorItem]];
+ }
+
/* special case for the subtitles items */
if( [[o_parent title] isEqualToString: _NS("Subtitles Track")] == YES )
{
config_ChainParse( p_filter, CFG_PREFIX, ppsz_filter_options,
p_filter->p_cfg );
- p_sys->p_mask = NULL;
+ psz_string =
+ var_CreateGetStringCommand( p_filter, CFG_PREFIX "mask" );
if( psz_string && *psz_string )
{
LoadMask( p_filter, psz_string );
msg_Err( p_filter, "Error while loading mask (%s).",
psz_string );
}
+ else
+ p_sys->p_mask = NULL;
free( psz_string );
vlc_mutex_init( &p_sys->mask_lock );
- psz_string =
- var_CreateGetStringCommand( p_filter, CFG_PREFIX "mask" );
var_AddCallback( p_filter, CFG_PREFIX "mask", MaskCallback,
p_filter );
p_filter->pf_video_filter = Filter;
p_mi->drawable.agl = 0;
p_mi->drawable.xid = 0;
p_mi->drawable.hwnd = NULL;
+ p_mi->drawable.nsobject = NULL;
p_mi->p_libvlc_instance = p_libvlc_instance;
p_mi->p_input_thread = NULL;
p_mi->i_refcount = 1;
case DEMUX_GET_TIME:
pi64 = (int64_t*)va_arg( args, int64_t * );
- if( i_bitrate > 0 && i_end > i_start )
+ if( i_bitrate > 0 && i_tell >= i_start )
{
*pi64 = INT64_C(8000000) * (i_tell - i_start) / i_bitrate;
return VLC_SUCCESS;