X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fqtcapture.m;h=f6665eb45e07f0131c01c6e01abfdac32da08bfb;hb=bc09c365ab435fda0185e60a423f69d6dfa348c8;hp=9656949d2cffc75b673f0f797a885304e67faa5f;hpb=78d87996ccb92d1dc91c9987685f976ed3be08a6;p=vlc diff --git a/modules/access/qtcapture.m b/modules/access/qtcapture.m index 9656949d2c..f6665eb45e 100644 --- a/modules/access/qtcapture.m +++ b/modules/access/qtcapture.m @@ -170,8 +170,9 @@ static int qtchroma_to_fourcc( int i_qt ) } qtchroma_to_fourcc[] = { /* Raw data types */ - { k422YpCbCr8CodecType, VLC_CODEC_UYVY }, - { kComponentVideoCodecType,VLC_CODEC_YUYV }, + { '2vuy', VLC_CODEC_UYVY }, + { 'yuv2',VLC_CODEC_YUYV }, + { 'yuvs', VLC_CODEC_YUYV }, { 0, 0 } }; int i; @@ -194,7 +195,6 @@ static int Open( vlc_object_t *p_this ) int i; int i_width; int i_height; - int i_aspect; int result = 0; /* Only when selected */ @@ -232,7 +232,7 @@ static int Open( vlc_object_t *p_this ) if( ![p_sys->device open: &o_returnedError] ) { - msg_Err( p_demux, "Unable to open the capture device (%i)", [o_returnedError code] ); + msg_Err( p_demux, "Unable to open the capture device (%ld)", [o_returnedError code] ); goto error; } @@ -254,12 +254,12 @@ static int Open( vlc_object_t *p_this ) /* Get the formats */ NSArray *format_array = [p_sys->device formatDescriptions]; QTFormatDescription* camera_format = NULL; - for( int k=0; k < [format_array count]; k++ ) + for( int k = 0; k < [format_array count]; k++ ) { camera_format = [format_array objectAtIndex: k]; - NSLog( [camera_format localizedFormatSummary] ); - NSLog( [[camera_format formatDescriptionAttributes] description] ); + NSLog( @"%@", [camera_format localizedFormatSummary] ); + NSLog( @"%@",[[camera_format formatDescriptionAttributes] description] ); } if( [format_array count] ) camera_format = [format_array objectAtIndex: 0]; @@ -284,7 +284,8 @@ static int Open( vlc_object_t *p_this ) fmt.video.i_height = p_sys->height = encoded_size.height; if( par_size.width != encoded_size.width ) { - fmt.video.i_aspect = par_size.width * VOUT_ASPECT_FACTOR / encoded_size.width ; + fmt.video.i_sar_num = (int64_t)encoded_size.height * par_size.width / encoded_size.width; + fmt.video.i_sar_den = encoded_size.width; } NSLog( @"encoded_size %d %d", (int)encoded_size.width, (int)encoded_size.height ); @@ -302,14 +303,14 @@ static int Open( vlc_object_t *p_this ) bool ret = [p_sys->session addInput:input error: &o_returnedError]; if( !ret ) { - msg_Err( p_demux, "default video capture device could not be added to capture session (%i)", [o_returnedError code] ); + msg_Err( p_demux, "default video capture device could not be added to capture session (%ld)", [o_returnedError code] ); goto error; } ret = [p_sys->session addOutput:p_sys->output error: &o_returnedError]; if( !ret ) { - msg_Err( p_demux, "output could not be added to capture session (%i)", [o_returnedError code] ); + msg_Err( p_demux, "output could not be added to capture session (%ld)", [o_returnedError code] ); goto error; } @@ -350,9 +351,11 @@ static void Close( vlc_object_t *p_this ) * Else we dead lock. */ if( vlc_object_alive(p_this->p_libvlc)) { - [p_sys->session stopRunning]; - [p_sys->output release]; - [p_sys->session release]; + // Perform this on main thread, as the framework itself will sometimes try to synchronously + // work on main thread. And this will create a dead lock. + [p_sys->session performSelectorOnMainThread:@selector(stopRunning) withObject:nil waitUntilDone:NO]; + [p_sys->output performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:NO]; + [p_sys->session performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:NO]; } free( p_sys );