Feb 24 Thu 2010 =============== [Issue] *Crush* on exit while transition is in progress [Owner] Me [Status] - [Description] Application blows up if quited from on transition process. To replicate: set transition to longest period (100 frames), take some video clip, and in the middle of that process press (x) button. ==== D O N E ==================================================================> ==> ==> ___[Dec 10 2009]___ + Change filter string in Choose-clip-dialog from "AVI + MPEG + TML" to "AVI, MPEG, TML" ___[Nov 03 2009]___ [Issue] 0x80010005 hr on ISLTMSrv.CoCreateInstance(). [Owner] Larisa MITKO [Status] + [Description] Application crashes after several tries to acquire any busy board. [Guess] Call allocate mixer indirectly via WM_TIMER msg. + Didn't help. [Guess] PostMessage user defined msg to allocate the mixer. + Didn't help. [Guess] Release Mixer SYNCHRONOUSLY. + Didn't help. [Guess] UnlockResources() on Release(). + Didn't help. [Solution] To override COleMessageFilter::OnMessagePending(): return FALSE; Just create a new CMyOleMsgFilter: public COleMessageFilter. Then register new filter in CWinApp::InitInstance(): if (!AfxOleInit()) { return FALSE; } CWinThread* pThread = AfxGetThread(); BOOL res = TRUE; if (pThread != NULL) { // Destroy message filter, thereby unregistering it. delete pThread->m_pMessageFilter; pThread->m_pMessageFilter = NULL; // Create the new message filter object. pThread->m_pMessageFilter = new CMyOleMsgFilter; ASSERT(AfxOleGetMessageFilter() != NULL); // Register the new message filter object. res = AfxOleGetMessageFilter()->Register(); } [Issue] Localize static-field on CDlgSettings [Owner] Larisa MITKO [Status] + ___[Oct 28 2009]___ [Issue] Change error message [Owner] Natalia NECHAEVA [Status] + [Issue] Incorrect clip cell invalidation [Owner] Natalia NECHAEVA [Status] Waiting until it repeats. [Description] Can't repeat. [Issue] Uncalculated tml file duration [Owner] Natalia NECHAEVA [Status] + [Description] There are two types of vagueness: (1) Clip returns duration, but isn't playable; (2) Clip doesn't return duration, but playable; [Comment] (1) No duration: ISLTMSuperClip->AddTMLProject(): E_ACCESSDENIED. (2) Doesn't play, may not return duration: E_INVALIDARG, "Недопустимые данные". [Solution] TML file has specific scheme of how to add it into the ISLTMSuperClip. Unlike AVI/MPEG which are put into the ISLTMSuperClip via ISLTMAddMedia, TML file is put directly via ISLTMSuperClip over AddTMLProject. And second step is prohibited. [Issue] Clip duration progress bar doesn't go away [Owner] Natalia NECHAEVA [Status] + [Description] On clip-image transition, progress bar doesn't go away, it's left at the bottom. [Guess] + MSG to hide the progress bar. ___[Oct 25 2009]___ [Issue] Optionize clip duration showing. [Owner] Me [Status] + [Goal] To give a possibility to hide/show clip duration prefixes. [ToDo] + Save/Restore "m_b_show_durations" flag to/from registry. [ToDo] + set_cell_info(): make algo work dependend on the flag. [ToDo] + cell_clip_fname(): flag dependend algo. [ToDo] + fillup_clipdurations(): flag. [ToDo] + CDlgMovieList::DoModal()==IDOK - refresh clip list (add/remove durations). [ToDo] + Place checkbox on MovieList dlg. [ToDo] + Disable flag provided a single is being modified. [ToDo] + Add Group control "Common" [ToDo] + Fix cell_clip_fname() bug: gotta cut only prefix, but don't cut [..] if it's it the fname. ___[Oct 24 2009]___ [Issue] Crash on exit while filling up clip durations [Owner] Me [Status] + [Problem] App crashes if I go out while it's filling up clip durations. [Problem] Deadlock [Solution] I replaced lock()/unlock() functions with CMovieList::wnd_valid() function which if returns FALSE none of cals to the window are performed. [Issue] Transition text percentage field shortage [Owner] Me [Status] + [Problem] The field is too short for "100.0%" string, but ok for IDS_READY. [Solution] I gotta compare these strings and take max length. ___[Oct 23 2009]___ [Issue] Display Zero Audio Volume (0.0) without "-" [Owner] Natalia NECHAEVA [Status] + ___[Oct 22 2009]___ [Issue] Clip Position [Owner] Natalia ADYGEZALOVA [Status] + [Goal] To show current position of a clip being played. [Question] Is it good to put status bar and progress bar inside that bar? Because there is a horizontal scroll bar which intersects the status bar. > Scroll bars work inside movie list, not the whole window. So if I put status bar, it isn't gonna be hidden! So let's try that. [ToDo] + Put status bar at the bottom of the movie list window. [ToDo] + Put progress bar inside that status bar. [ToDo] + Ask Scene about movie position. [ToDo] + Reset on 100%. [ToDo] + Add text percentage. [Issue] Make clip VI accepting MPEG & TML file as well as AVI. [Owner] Me [Status] + [Goal] To allow setting more clips (support all the extensions from MovieList currently available). [Issue] Bad movie notification [Owner] Me [Status] + [Goal] To notify user that a selected movie couldn't be played and DESELECT it automatically. [Comment] CMIXERDlg::Mixer_NotSupportableMedia() does notification and deselection. It is sent from CScene::GetReady(). [Issue] Clip Length [Owner] Natalia ADYGEZALOVA [Status] + [Goal] To see simultaneously all the durations of all the clips in cliplist. [Question] Via which interface do I get clip (avi, mpeg) duration? [Guess] Via timeline? + ISLTMTimeline::get_RestTime(double *pSeconds); [Question] How do I ask durations of all the clips not interrupting user from interaction with the app? I mean it takes fairly long time. [Guess] I should ask for durations in a separately thread. Every time list is refreshed I wake up that thread and tell it start from the scratch. And it goes to sleep when it completes asking for durations. [Question] How do I show durations? Where? Time Format? [Guess] Each Clip is to have prefixed time stamp: «[hh:mm:ss] Clip name yo.mpg» [ToDo] + Put «[--:--:--]» in front of each clip file name. [ToDo] + GetFilename is to cut out prefix. [ToDo] + CMovieList: ColsAmount(), RowsAmount(iCol), cell_clip_fname(col, row). [ToDo] + Separate clip duration filling thread (State_JustAwaken, State_Processing, State_Sleeping). [ToDo] + Refresh single group if selected. [ToDo] + OnSelect() of a clip which couldn't be played show MessageBox saying the clip isn't correct - don't bother playing it. [Question] Who is responsible of Mixer or PreviewMediaWnd or MovieList or Scene for notifying user that clip isn't playable? + Scene looks the most relevant. [Issue] Change Audio Settings Dialog Caption [Owner] Natalia ADYGEZALOVA [Status] + [Requirements] Must spell exactly as in FDPostPlay VideoIn. ___[Oct 19 2009]___ [Issue] UpSideDown Avi Preview (8710) [Owner] Larisa MITKO [Status] + [Comment] Tarancev & Arsenin businesses. [Issue] Camera Distorted Preview (8711) [Owner] Larisa MITKO [Status] + [ToDo] As Tarancev said I just should use IConvertImage to resize video frame. [Comment] Win32 bmp files MUST have divisible by 4 width. Means that last two bits in binary representation should be equal to 0: ...bbbbb00 Those pixels should be repainted but ain't so should be repainted border color. [ToDo] Repaint tail pixels with border color. - Looks disgusting. A better way is to move border left by tail pixels. So. Preview window draws right border ONLY IF live video window says it perfectly fits its size. Otherwise, preview window draws COLOR_BTNFACE border and lets live video window manage border business. [Issue] "LiveVideo - Pic - Pic" Broken Transition (last one doesn't happen) [Owner] Larisa MITKO [Status] + [Problem] Last picture VI doesn't go into air. [Comment] That is gotta be a SelectedDuringTransition - Previously Taken - system bug. - Wrong. It works just fine. [Question] How do I start figuring out where the problem is exactly? - By guessing. [Guess] Picture isn't loaded into timeline. - No. [Guess] Wrong Scene Indeces given for ChangeMixer4Mode(). - No. [Guess] SetStateAtBoardField() provided with wrong time (too delayed). - Nope. [Solution] Put Reset() into CScene::Set_Img() and CScene::Set_Movie(). ___[Oct 15 2009]___ Still error/FIFO field drop on only one transition avi file: ZOOM. [Issue] Live Preview Doesn't Work in Release version [Owner] Me [Status] + [Comment] That is ASSERT() tricky issue. In release version all the code that goes inside the ASSERT() macros is REMOVED. So my release version was missing crucial code places (which I tryied to specifically verify!). [Issue] Preview Label isn't seen in Release version [Owner] Me [Status] + [Comment] That is ASSERT() tricky issue. In release version all the code that goes inside the ASSERT() macros is REMOVED. So my release version was missing crucial code places (which I tryied to specifically verify!). ___[Oct 14 2009]___ [Issue] Audio Foreign Mute - Disable Sliders [Owner] Igor TARANCEV [Status] + [Issue] Audio controller label - displays volume db-value [Owner] Igor TARANCEV [Status] + [ToDo] + Put 6 labels onto MIXERDlg.rc [ToDo] + Put 6 labels onto MIXERDlg.rc[RUS] & make sure these labels have the same identifiers. [ToDo] + Put labels into Layout_Manager. [ToDo] + Hide labels on EnableControls (false). -- It's done automatically thru m_Layouter.ShowItems(FALSE). [ToDo] + Connect runners moving with proper label text displaying. ___[Oct 13 2009]___ [Issue] Audio controller upper bound (+12dB) [Owner] Igor TARANCEV [Status] + ___[Oct 12 2009]___ [Issue] User Assist for audio controllers (AIN1L/R => AOUT1/2, AIN2L/R => AOUT3/4, AIN3L/R => AOUT5/6) [Owner] Natalia ADYGEZALOVA [Status] + [Goal] Help user to understand which controller to touch. [Requirements] (1) Let user know that AIN1L == AOUT1, AIN1R == AOUT2, AIN2L == AOUT3, AIN2R == AOUT4, AIN3L == AOUT5, AIN3R == AOUT6 [Comment] Tarancev advised to discard this issue since (1) there is almost no space and mechanism is very clear (AIN1L => AOUT1, AIN1R => AOUT2, AIN2L => AOUT3, AIN2R => AOUT4, AIN3L => AOUT5, AIN3R => AOUT6). [Issue] Default Transition [Owner] Igor TARANCEV [Status] + [Goal] Enable default dissolve transition effect (DTE) in any case. [Requirements] (1) Logical Scheme: !transition folder => DTE. transition folder && !DTE => User picked up effect. transition folder && DTE => DTE. (2) Should look like: first element in the effect list is . [ToDo] + Figure out how to sort file list from specified folder. (Answer) Manually, as MSDN (ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fileio/fs/findnextfile.htm) says: «The order in which the search returns the files, such as alphabetical order, is not guaranteed, and is dependent on the file system. You cannot depend on any specific ordering behavior. If the data must be sorted, you must do the ordering yourself after obtaining all the results.» [ToDo] + Turnoff sorting for transition effect combo. (Comment) It's already unsorted. [ToDo] + Display Transition Effect List in the following way: Default (Dissolve) Barn door Blinds Clockwise Page peel Page roll [ToDo] + Make sure Transition Effect List is localized, that is if the language is changed, I load according string from resources and replace that first line. [Question] How do I fillup the list? [ToDo] (1) + Two string resources: IDS_DEFAULT_TRANSITION_EFFECT_NAME (2) + Right after folder scan procedure I put the default effect string name into first position in the list. (3) + On Setting Transition File, I check if the file is first, and if positive, I set default effect via mask, not via decoder. [ToDo] + Invent default DISSOLVE effect preview (over CPaintDC). [ToDo] + Default DISSOLVE effect: take the picture OFF picture border! [ToDo] + Save/Restore preview effect index. [ToDo] + Tooltip: "Click right button to specify transition clip folder". ___[Oct 11 2009]___ [Issue] Bad Movie Warning Mechanism [Owner] Me [Status] + [Goal] To prevent an operator from relying on non-playable movie [Requirements] (1) As operator selects a clip that can't be played there should a message box popup, saying: "incorrect clip!" ___[Oct 7 2009]___ [Issue] Stream Decrease [Owner] Me [Status] + [Goal] To eliminate «error/FIFO Fields dropped» [Requirements] (1) Every time 4MixerState or preview source changed I call the procedure which sets ArtistDataSource via ISLTMArtist->set_ArtistDataSource(). mixer_enum: {(0) Scene, (1) DecA, (2) DecB, (3) DecAB}; preivew_enum: {(0) Scene, (1) DecA, (2) DecB}; result = mixer_value | preview_value; result == 3 then SLTM_ASAB result == 2 || result == 4 then SLTM_ASB then SLTM_ASA [Question] How do I simultaneously access both MIXER_STATE and PREVIEW_STATE? to set correct (appropriate) artist data source? + Over CAppConf::GetInstance().GetArtistDataSource(). [Question] Which are the exact places to put a call the set_artist_data_source() procedure? + The place where I change either mixer_state or preview_state. [Question] How do I handle delayed mixer state change so as artist data source works exactly equal period of time? [Issue] Border for Preview Frame [Owner] Me [Status] + [Goal] To separate frame image from background [Requirements] (1d) Single-pixel black border ___[Oct 2 2009]___ [Issue] Preview window source label (from CStatic) [Owner] Me [Status] + [Goal] To assure user which source is being previewed. [Requirements] (1d) Language localized. (2d) Contain - type (Live/ Picture/ Clip/ Clip List/) - type specific info -- Live: decoder, source -- Picture: address -- Clip: address -- Clip List: address (3d) Widespread throughout the entire window width and only single-line in height.