Bonjour
je suis entrain d'ecrire une class pour creer un lecteur de video et elle marche niquel.
Je veus implementer correctement la fonction PlayTime
je veus pouvoir juste passer mon objet de temps faire les calculs pour apres utiliser la fonction SetCurrentTime de IMediaControl.
J'ai essayer avec IMediaSeeking et IMediaPosition et j'obtien les effet que je veus.
Mon problem est le suivant, je veus faire ma class comme etant le plus generique possible au niveau des format de temps pour pouvoir etre reutiliser le plus facilement possible.
ainsi je voudrais savoir sur quel base fonctionne les different format de temps:
-quel est celui de IMediaPosition
-dans IMediaSeeking:
-TIME_FORMAT_FRAME: le temps est compter en frames
-TIME_FORMAT_MEDIA_TIME: en 100 nano seconde
- mais pour les autres je n'arrive pas a determiner a quoi correspond leur format : NONE, BYTE, SAMPLE,FIELD
quelqu'un peu m'expliquer les differences entre ses format.
mon objectif etant de pouvoir faire une fonction dans se style
de cette manier quelquesoit le temps de format accepter mes methode pourront marcher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 HRESULT MediaReader::FrameStepBackwards() { GUID gformat; LONGLONG time; HRESULT hr = S_OK; hr = g_pSeek->GetTimeFormat(&gformat); if(FAILED(hr)) { AfxMessageBox("Could not Get the current time format"); return E_FAIL; } hr = g_pSeek->GetTime(&time); if(FAILED(hr)) { AfxMessageBox("Could not Get the current time format"); return E_FAIL; } if(gformat == TIME_FORMAT_FRAME) time--; else if(gformat == TIME_FORMAT_MEDIA_TIME) time-=29970;//0.02997 sec en 100 nanoseconde else if ... hr = g_pSeek->SetTime(time); if(FAILED(hr)) { AfxMessageBox("Could not Get the current time format"); return E_FAIL; }
merci d'avance
Partager