- Timestamp:
- 02/23/10 22:36:05 (2 years ago)
- Location:
- branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework
- Files:
-
- 4 modified
-
CMPDVDPlayer.h (modified) (3 diffs)
-
CMPDVDPlayer.m (modified) (4 diffs)
-
CMPDVDPlayerController.h (modified) (2 diffs)
-
CMPDVDPlayerController.m (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayer.h
r1163 r1166 44 44 } CMPDVDState; 45 45 46 typedef enum { 47 CMPDVDZoomNormal, 48 CMPDVDZoomLetterBoxInFullFrame, 49 CMPDVDZoom2x, 50 CMPDVDZoomLevelCount, 51 } CMPDVDZoomLevel; 52 46 53 @class CMPDVDPlayerController, CMPDVDFrameworkLoadAction; 47 54 … … 56 63 UInt32 currentElapsedTime; 57 64 NSTimer *stopTimer; 65 CMPDVDZoomLevel zoomLevel; 58 66 } 59 67 … … 90 98 - (void)nextAudioStream; 91 99 - (void)nextSubStream; 100 - (void)setZoomLevel:(CMPDVDZoomLevel)level; 101 - (CMPDVDZoomLevel)zoomLevel; 92 102 + (BOOL)isVolume:(NSString *)theVolume; 93 103 + (BOOL)isImage:(NSString *)theVolume; -
branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayer.m
r1163 r1166 684 684 } 685 685 686 - (void)setZoomLevel:(CMPDVDZoomLevel)level 687 { 688 zoomLevel = level; 689 [self updateVideoBounds]; 690 } 691 692 - (CMPDVDZoomLevel)zoomLevel 693 { 694 return zoomLevel; 695 } 696 686 697 static BOOL pauseOnPlay = NO; 687 698 - (void)initiatePlaybackWithResume:(BOOL *)resume; … … 730 741 //NSLog(@"Stopping"); 731 742 DVDUnregisterEventCallBack(eventCallbackID); 743 [stopTimer invalidate]; 744 stopTimer = nil; 732 745 eventCallbackID = 0; 733 746 DVDStop(); … … 868 881 } 869 882 870 - (int)aspectRatios871 {872 DVDAspectRatio aspectRatio = kDVDAspectRatioUninitialized;873 DVDGetAspectRatio (&aspectRatio);874 875 876 switch (aspectRatio) {877 case kDVDAspectRatio4x3:878 case kDVDAspectRatio4x3PanAndScan:879 return 0; //4:3880 break;881 case kDVDAspectRatio16x9:882 case kDVDAspectRatioLetterBox:883 return 1; //16:9884 break;885 }886 887 return 0;888 }889 890 - (void)update1080iBoundsWithSize:(NSSize)nativeSize891 {892 int aspect = [self aspectRatios];893 894 //float var = (nativeSize.width/nativeSize.height);895 //NSRect frame = [win frame];896 CGDirectDisplayID display = [(BRDisplayManager *)[BRDisplayManager sharedInstance] display];897 CGRect frame = CGDisplayBounds( display );898 frame.size.width = CGDisplayPixelsWide( display );899 frame.size.height = CGDisplayPixelsHigh( display );900 901 CGSize currentSize;902 currentSize.width = frame.size.width;903 currentSize.height = frame.size.height;904 Rect qdRect;905 906 switch (aspect)907 {908 case 0: //4:3909 //NSLog(@"4:3");910 qdRect.left = 125;911 qdRect.right = 1155;912 qdRect.top = 0;913 qdRect.bottom = 1080;914 915 break;916 917 case 1: //16:9918 //NSLog(@"16:9");919 qdRect.left = 0;920 qdRect.right = frame.size.width;921 qdRect.top = 0;922 qdRect.bottom = 1080;923 break;924 925 }926 DVDSetVideoBounds(&qdRect);927 }928 929 883 - (NSSize)size 930 884 { … … 973 927 974 928 NSSize currentSize; 975 currentSize.width = frame.size.width;976 currentSize.height = frame.size.height;977 978 929 if([shortString isEqualToString:@"1080i"]) 979 930 { 980 //NSLog(@"width = %f", (float)frame.size.width); 981 //NSLog(@"height = %f", (float)frame.size.height); 982 [self update1080iBoundsWithSize:nativeSize]; 983 return; 984 } 985 986 //NSRect content = [[win contentView] bounds]; 931 currentSize.width = 1280; 932 currentSize.height = 1080; 933 } 934 else 935 { 936 currentSize.width = frame.size.width; 937 currentSize.height = frame.size.height; 938 } 939 940 NSRect rect; 941 if(NSEqualSizes(currentSize, nativeSize)) 942 { 943 rect.size = currentSize; 944 } 945 else if(currentSize.width/currentSize.height > nativeSize.width/nativeSize.height) 946 { 947 float resizeScale = currentSize.height/nativeSize.height; 948 rect.size.width = nativeSize.width * resizeScale; 949 rect.size.height = currentSize.height; 950 } 951 else 952 { 953 float resizeScale = currentSize.width/nativeSize.width; 954 frame.size.height = nativeSize.height * resizeScale; 955 frame.size.width = currentSize.width; 956 } 957 958 switch (zoomLevel) { 959 case CMPDVDZoomLetterBoxInFullFrame: 960 rect.size.width *= 4.0f/3.0f; 961 rect.size.height *= 4.0f/3.0f; 962 break; 963 case CMPDVDZoom2x: 964 rect.size.width *= 2.0f; 965 rect.size.height *= 2.0f; 966 break; 967 default: 968 break; 969 } 970 971 rect.origin.x = (currentSize.width - rect.size.width)/2; 972 rect.origin.y = (currentSize.height - rect.size.height)/2; 987 973 988 974 Rect qdRect; 989 float resizeScale = 1.0; 990 if(NSEqualSizes(currentSize , nativeSize)) 991 { 992 //NSLog(@"one"); 993 qdRect.left = 0; 994 qdRect.right = frame.size.width; 995 qdRect.bottom = frame.size.height; 996 qdRect.top = 0; 997 } 998 else if(currentSize.width/currentSize.height > nativeSize.width/nativeSize.height) 999 { 1000 //NSLog(@"two"); 1001 resizeScale = currentSize.height/nativeSize.height; 1002 //NSLog(@"resizeScale: %f", resizeScale); 1003 qdRect.left = currentSize.width/2 - (nativeSize.width * resizeScale)/2; 1004 //NSLog(@"qdRect.left: %d", qdRect.left); 1005 qdRect.right = currentSize.width/2 + (nativeSize.width * resizeScale)/2; 1006 qdRect.bottom = frame.size.height; 1007 qdRect.top = 0; 1008 //NSLog(@"qdRect.left: %d right: %d top: %d bottom: %d", qdRect.left,qdRect.right,qdRect.top, qdRect.bottom); 1009 } 1010 else 1011 { 1012 //NSLog(@"three"); 1013 resizeScale = currentSize.width/nativeSize.width; 1014 qdRect.left = 0; 1015 qdRect.right = frame.size.width; 1016 qdRect.bottom = frame.size.height - currentSize.height/2 + (nativeSize.height * resizeScale)/2; 1017 qdRect.top = frame.size.height - currentSize.height/2 - (nativeSize.height * resizeScale)/2; 1018 } 1019 1020 //qdRect.left = 0; 1021 //qdRect.right = frame.size.width; 1022 //qdRect.bottom = frame.size.height; 1023 //qdRect.top = 0; 1024 1025 //NSLog(@"4: DVDSetVideoBounds"); 975 qdRect.left = rect.origin.x; 976 qdRect.right = rect.origin.x + rect.size.width; 977 qdRect.top = rect.origin.y; 978 qdRect.bottom = rect.origin.y + rect.size.height; 979 1026 980 DVDSetVideoBounds(&qdRect); 1027 //[self display];1028 //if(result) {1029 //NSLog(@"DVDSetVideoBounds returned %d", result);1030 //}1031 1032 //currentScale = currentSize.height/nativeSize.height;1033 981 } 1034 982 -
branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayerController.h
r1140 r1166 29 29 CMPDVDPlayerControllerOverlayModeSubAndAudio, 30 30 CMPDVDPlayerControllerOverlayModeChapters, 31 CMPDVDPlayerControllerOverlayModeZoom, 31 32 } CMPDVDPlayerControllerOverlayMode; 32 33 … … 45 46 CMPDVDTextView *audioOverlay; 46 47 CMPDVDTextView *chapterOverlay; 48 CMPDVDTextView *zoomOverlay; 47 49 CMPDVDPlayerPlayHead *playheadOverlay; 48 50 CMPDVDBlurredMenu *blurredMenu; -
branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayerController.m
r1163 r1166 145 145 [audioOverlay release]; 146 146 [chapterOverlay release]; 147 [zoomOverlay release]; 147 148 [playheadOverlay release]; 148 149 [blurredMenu release]; … … 344 345 BOOL closeAudio = (audioOverlay != nil); 345 346 BOOL closeChapter = (chapterOverlay != nil); 347 BOOL closeZoom = (zoomOverlay != nil); 346 348 BOOL closePlayhead = (playheadOverlay != nil); 347 349 … … 358 360 closeChapter = NO; 359 361 closePlayhead = NO; 362 break; 363 case CMPDVDPlayerControllerOverlayModeZoom: 364 closeZoom = NO; 360 365 break; 361 366 default: … … 371 376 if(closeChapter) 372 377 closeAndNilOverlay(windowCreation, &chapterOverlay, fadeTime); 378 if(closeZoom) 379 closeAndNilOverlay(windowCreation, &zoomOverlay, fadeTime); 373 380 if(closePlayhead) 374 381 closeAndNilOverlay(windowCreation, &playheadOverlay, fadeTime); … … 414 421 } 415 422 423 - (NSString *)chapterString 424 { 425 return [NSString stringWithFormat:@"Chapter %d/%d", [player currentChapter], [player chapters]]; 426 } 427 416 428 - (void)showChapterMode 417 429 { … … 421 433 if(!chapterOverlay) 422 434 chapterOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 423 [chapterOverlay setText:[ NSString stringWithFormat:@"Chapter %d/%d", [player currentChapter], [player chapters]]];435 [chapterOverlay setText:[self chapterString]]; 424 436 [chapterOverlay displayWithFadeTime:0.25]; 425 437 [self showPlayheadOverlay]; 438 439 [self resetOverlayTimerTo:10]; 440 } 441 442 - (NSString *)zoomModeString 443 { 444 switch ([player zoomLevel]) { 445 case CMPDVDZoomLetterBoxInFullFrame: 446 return @"Zoom: 4/3x"; 447 case CMPDVDZoom2x: 448 return @"Zoom: 2x"; 449 } 450 return @"Zoom: None"; 451 } 452 453 - (void)showZoomMode 454 { 455 overlayMode = CMPDVDPlayerControllerOverlayModeZoom; 456 [self overlayModeChangedWithFade:0]; 457 458 if(!zoomOverlay) 459 zoomOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperRight] retain]; 460 [zoomOverlay setText:[self zoomModeString]]; 461 [zoomOverlay displayWithFadeTime:0.25]; 426 462 427 463 [self resetOverlayTimerTo:10]; … … 515 551 { 516 552 [player nextChapter]; 517 [chapterOverlay setText:[NSString stringWithFormat:@"Chapter %d/%d", [player currentChapter], [player chapters]]]; 553 [chapterOverlay setText:[self chapterString]]; 554 [self resetOverlayTimerTo:10]; 555 } 556 else if(overlayMode == CMPDVDPlayerControllerOverlayModeZoom) 557 { 558 [player setZoomLevel:([player zoomLevel] + 1) % CMPDVDZoomLevelCount]; 559 [zoomOverlay setText:[self zoomModeString]]; 518 560 [self resetOverlayTimerTo:10]; 519 561 } … … 538 580 { 539 581 [player previousChapter]; 540 [chapterOverlay setText:[ NSString stringWithFormat:@"Chapter %d/%d", [player currentChapter], [player chapters]]];582 [chapterOverlay setText:[self chapterString]]; 541 583 [self resetOverlayTimerTo:10]; 542 584 } 585 else if(overlayMode == CMPDVDPlayerControllerOverlayModeZoom) 586 ; 543 587 else if(playingInSomeForm) 544 588 [player decrementScanRate]; … … 556 600 [self showSubAndAudioMode]; 557 601 else if(overlayMode == CMPDVDPlayerControllerOverlayModeSubAndAudio) 602 [self showZoomMode]; 603 else if(overlayMode == CMPDVDPlayerControllerOverlayModeZoom) 558 604 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 559 605 else if(overlayMode == CMPDVDPlayerControllerOverlayModeChapters) … … 572 618 else if(overlayMode == CMPDVDPlayerControllerOverlayModeSubAndAudio) 573 619 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 620 else if(overlayMode == CMPDVDPlayerControllerOverlayModeZoom) 621 [self showSubAndAudioMode]; 574 622 else if(overlayMode == CMPDVDPlayerControllerOverlayModeChapters) 575 623 overlayMode = CMPDVDPlayerControllerOverlayModeStatus;
