Is it possible to play Cinepack data from any position?
If possible, how can I do it?
Is it possible to do this with Cinepack data that only has sound (no image data)?
Please tell me about these two points.
Playing Cinepack data from any position is possible as long as it is in memory, there is no sound, and all keyframes are present.
you can't.
First , since Ver1.10, the CPK_Pause function returns a return value, and if it cannot be paused correctly, it will output an error code.
TRUE | :Command was accepted |
FALSE | :Command was not accepted |
Be sure to check the error codes above.
Second , if you execute this CPK_Pause function at a change in the movie, the change cannot be determined within the function, so the same phenomenon may occur even if you perform the first check.
For details on the processing to be performed before executing the CPK_Pause function, please refer to " (11) About changing the next handle registration " in the Cinepak User's Manual.
When I pause with Movie2 registered, I call the CPK_Pause function for both Movie1 and Movie2, but if I pause while Movie1 is playing (before Movie2 is played), Movie1 returns TRUE. , and Movie2 has not been played yet, so it returns FALSE, but what kind of processing should I do to determine if the pause was successful?
If you execute CPK_EntryNext, check the transition period of the next handle of the CPK_EntryNext function, and do not execute the CPK_Pause function until you are sure that Movie2 is in the play state.
Also, when playing CinePack, an error (error code 0x301) occurred that the initial value of "FLOP" was too small.What is "FLOP"? What can I do to make it bigger?
In the case where this error code is output,
There is a function called CPK_SetPan, which corresponds to so-called left-right balance. Therefore, it does not make the sound of CinePack stereo/mono.
For example, when playing three movies A, B, and C seamlessly, can't A and C be shared in the same buffer?
(For PAL, the number of V-Blanks has decreased from 1/60 to 1/50, so simply increase it.)
(Cinepak library may malfunction if your application uses Slave CPU.)
There are two possibilities.
In the case of this problem, there is a possibility that it can be cleared by taking action in (1). In fact, when changing from 1/60 to 1/50 (from NTSC to PAL), the same symptoms as yours occur due to the timing difference.
As a countermeasure by changing the program, it is possible to change the graphics transfer timing and transfer method.
For other cases, it is possible to correct the data for PAL, and possible correction methods include dropping frames or changing key frames (30 to 25, etc.).
> /* Start movie */ > CPK_Start( cpk[0] ); > > /* Register the next movie to play */ > for ( i = 1 ; i< FILE_MAX ; i++ ) > { > CPK_EntryNext( cpk[i] ); > }
It seems that this is not the case, so if you want to register when the second movie starts playing, would it be possible to detect the end of the first movie and then issue CPK_EntryNext?
Be sure to set each error processing function GFS_SetErrFunc, STM_SetErrFunc, and CPK_SetErrFunc to detect errors. It also improves debugging efficiency.
CPK_SetTrModeCd(cpk, CPK_TRMODE_SCU); /* Transfer using SCU-DMA */ CPK_SetLoadNum(cpk, 10); /* Maximum value of one transfer amount [sector]*/
Also, since the bus used during SCU-DMA transfer is occupied, SH2 will be in a wait state from the moment it tries to access the CPU bus.
Please avoid using SCU-DMA as much as possible.
Before and after the splitting conditions, the internal compression efficiency and image quality become discontinuous, and the following trends are thought to occur.
The exact dividing conditions are unknown, but the ranges we have confirmed are shown below.
Area [pixel] | Number of frame divisions (number of tiles) |
---|---|
96000 = 480×200 or more | 3 |
95744 = 352×272 or less 59904 = 208×288 or more | 2 |
57344 = 256×224 or less | 1 (Do not split) |
15-bit color movies are not supported. Although it supports 32K color display of 24-bit data, this means that high-quality data will be wasted.
Convert an uncompressed QuickTime Movie with MovieToSaturn_J. There are no functions added for playing uncompressed movies.
Since the file header is interpreted and processed, it can be played using exactly the same procedure. However, the ring buffer must be larger than when compressed.
Audio conditions | Limit video performance |
---|---|
44kHz, 16bit stereo | 320×224[dot] 0.60[fps] |
22kHz, 8bit monaural | 320×224[dot] 1.32[fps] |
video only movie | 320×224[dot] 1.42[fps] |
video only movie | 160×112[dot] 5.71[fps] |
It will be easier to analyze the history if you create a simpler execution history after checking the reproducibility of malfunctions.
Note that this function outputs results to the SIMM area. Therefore, it will not work with CartDev + DevSaturn without SIMM.
In that case, you will need to separately purchase a buffer card that supports SIMM.
Break after processing CPK_Init. Check the address of the CpkdSys type structure cpkd_sys in the map file created during linking, and use the debugger command to set the value of cpkd_sys.mode to 0x00000001.
Example. Operation from command line of E7000/EVA board
:m 060XXXXX 1;l
The output address will be 0x04000000 to 0x047fffff.
(SW2-5 of the Programming Box< SIMMCART> Please turn off. )
Set CPKD_SetMode(ON) after CPK_Init. CPKD_SetPrintAddr allows you to set the output address. Using CPKD_PrintStr and CPKD_PrintData, it is possible to add and output the execution history of application-side processing.
When additionally outputting, please make the output size an integral multiple of 164 bytes to make history information easier to read.
:> hist.txt [RET] :d 04000000 04001000;l [RET] :> - [RET]
--------+--------------------------------------------+ ADDRESS : 0 1 2 3 4 5 6 7 8 9 A B C D E F : --------+--------------------------------------------+ 04000000: AAAA_AAAA ---- ---- ---- ---- ---- ---- : 04000010: "Err " ---- VVVV ---- ---- EEEE_EEEE :Error 04000020: "Task" PPPP VVVV HHHH_HHHH CCCC_CCCC :start of CPK_MeTask 04000030: "RWri" WWWW VVVV HHHH_HHHH DDDD_DDDD :WRIte Ringbuffer 04000040: "RRea" RRRR VVVV HHHH_HHHH DDDD_DDDD :REAd Ringbuffer 04000050: "DOn " FFFF VVVV LLLL_LLLL TTTT_TTTT :set Disp flag On 04000060: "DOff" FFFF VVVV HHHH_HHHH TTTT_TTTT :set Disp flag Off 04000070: "PcmS" MODE VVVV HHHH_HHHH ADDR SIZE :PCM Start 04000080: "PcmE" MODE VVVV HHHH_HHHH ---- ---- :PCM Stop 04000090: "LosF" FFFF VVVV LFLF_LFLF SSSS_SSSS :LOse Frame : :
Commercial applications typically use a maximum accuracy of 1/600 second.
Author Editor also handles videos assuming a TimeScale of 600.
However, depending on the application such as Adobe Premiere, the TimeScale is not necessarily fixed at 600.
Therefore, if the resulting movie does not have a TimeScale of 600, the playback time (called DurationTime in QuickTime) will look different.
(However, this does not affect playback in any way.)
An example is shown below.
TimeScale | TimeCode | DurationTime | ||
---|---|---|---|---|
1. | 600 | 00:00:30:00 | 18000 | normal movie |
2. | 30 | 00:00:30:00 | 900 | Movie with TimeScale of 30 |
3. | 20 | 00:00:30:00 | 600 | Movie with TimeScale of 20 |
Therefore, the playback time, which is originally 30 seconds, may be mistaken for 1.5 seconds.
Furthermore, modify Duration, Track Dur, and sampDur so that they are consistent with the TimeScale changes. (Modify all of these if there are multiple ones.) When you have finished making corrections, save and exit.
As far as I have checked, other compression tools (MovieConverter, ConvertToMovie, Movie Conversion, MovieShop, CoSA AfterEffects, etc.) always show a value of 600.
Therefore, unless you absolutely have to use Premiere, the best way to avoid this problem is to use another compression tool.