Abstract:
The present embodiments provide a program transferring method and an apparatus thereof. The method includes the following steps: selecting a program in a first storage medium; transferring the program from the first storage medium to a second storage medium; and generating a label for identifying the transferring status of the program.

Description:
BACKGROUND  
       [0001]     It is a common practice to transfer a program recorded on a first storage medium onto a second storage medium. This process is generally called dubbing. Dubbing may be conducted by reproducing the program recorded on the first storage medium, which may be a DVD disk, to generate a reproduction signal, and then storing the reproduction signal onto the second storage medium, which may be a hard disk.  
         [0002]     In general, dubbing usually includes transcoding, reformatting, reforming, or transforming of a program from one storage medium to another storage medium. The program is usually an audio file, a video file, an audio/video file, or a multimedia file. The two most common dubbing methods utilized in current digital recording are fast copy dubbing and transcode dubbing.  
         [0003]     Fast copy dubbing directly dubs a program from a source storage medium to a destination storage medium, generates program information and stores the information in the destination storage medium. Fast copy dubbing can fast dub one long program in a short time. For example, dubbing a 100-hour program with low quality may require only 1 hour. Thus, fast copy dubbing is usually adopted when dubbing a long program is necessary. However, since fast copy dubbing directly dubs a program without decoding or encoding, the duplicate possesses the same characteristics as the original program. Some of the characteristics are video quality, compression method, aspect ratio, bit-rate, video size, and TV system. Therefore, if the size of the program is larger than the capacity of the destination storage medium, it is necessary to separate the program into several pieces to fit the destination storage medium capacity. For example, when dubbing a 100-hour program of high quality from a hard disk to a DVD disk, a total amount of 100 DVD disks may be required.  
         [0004]     Please refer to  FIG. 1 .  FIG. 1  shows a conventional fast copy dubbing system  100 . The controller  110  includes a CPU  112  and a DRAM  114 . The CPU  112  first de-multiplexes the program in the hard disk  120  (i.e. the source storage medium) and then stores the temporarily de-multiplexed program in the DRAM  114 . The CPU  112  then re-multiplexes the temporary program in the DRAM to the DVD disk  130  (i.e. the destination storage medium). Some program-related information initially stored in the hard disk  120  is also temporarily moved to the DRAM and then written to the DVD disk  130 . The fast copy dubbing system  100  is also suitable for dubbing from the DVD disk  130  to the hard disk  120 , in which case it is only necessary to exchange the DVD disk  130  and the hard disk  120 .  
         [0005]     A transcoding dubbing process fully or partially decodes or encodes the original program in a source storage medium, and then writes the decoded or encoded program to a destination storage medium. Transcode dubbing also generates program information and stores the information in the destination storage medium. Since transcode dubbing fully or partially decodes or encodes the original program in a source storage medium, the characteristics of the duplicate in the destination storage medium may be different from the characteristics of the original program. Some of the characteristics are video quality, compression method, aspect ratio, bit-rate, video size, and TV system. For example, transcode dubbing transcodes a program from high quality to low quality, making the program fit the capacity of a DVD disk, or transcodes a program of 720×480 picture size to a program of 352×288 picture size, making the transcoded program able to be viewed on portable video players. However, because transcode dubbing fully or partially decodes or encodes the original program, transcode dubbing usually takes a long time to complete the dubbing process. For example, a 100-hour program may take 100 hours to finish the dubbing process.  
         [0006]     Please refer to  FIG. 2 .  FIG. 2  shows a conventional transcode dubbing system  200 . The controller  210  usually includes a CPU  212 , a DRAM  214 , an encoder  216 , and a decoder  218 . The CPU  212  first de-multiplexes the program in the hard disk  220  (i.e. the source storage medium) and then stores the temporary de-multiplexed program in the DRAM  214 . The CPU  212  optionally controls the decoder  218  to fully or partially decode the temporary de-multiplexed program. The decoded program is stored in the DRAM. The CPU  212  further optionally controls the encoder  216  to re-encode the program in the DRAM  214  and then the CPU  212  re-multiplexes the re-encoded program to the DVD disk  230  (i.e. the destination storage medium). The CPU  212  also generates some program-related information and then stores the information in the DVD disk  230 . The transcode dubbing system  200  is also suitable for dubbing from the DVD disk  230  to the hard disk  220 , in which case it is only necessary to exchange the DVD disk  230  and the hard disk  220 .  
         [0007]     For a combo recorder comprising a hard disk and a DVD device, according to the types of source storage medium and destination storage medium, dubbing can be categorized into two types: from a hard disk to a DVD disk and from a DVD disk to a hard disk. In the case of dubbing from a hard disk to a DVD disk, because the size of the original program in the hard disk is usually larger than the capacity of one DVD disk, it is necessary to divide the original program into several pieces to fit the capacity of one DVD disk during fast copy dubbing, or to re-encode the original program to a lower quality during transcode dubbing such that the size of the re-encoded program fits the capacity of one DVD disk. On the other hand, in the case of dubbing from a DVD disk to a hard disk, most of the time there is no difficulty dubbing one original program from a DVD disk to a hard disk. Users can usually utilize the transcode dubbing to first copy the original program to a hard disk, edit the original program (e.g. decoding or encoding or both), and then dub the edited program back to another DVD disk.  
         [0008]     Please refer to  FIG. 3 .  FIG. 3  shows a dubbing flow of the fast copy dubbing system  100  or the transcode dubbing system  200 . The controller  210  or  310  first determines which program has been selected by a user (S 310 ). Next, for the transcode dubbing system  200 , the controller  210  decodes and encodes the program (S 320  and S 330 ) if necessary. For the fast copy dubbing system  100 , the controller  110  skips the decoding and encoding steps. When the dubbing is in progress, the controller  210  checks if a writing error occurs in the destination storage medium (S 340 ) and checks if the user wants to stop the dubbing process (S 350 ). If a writing error occurs or the user stops the dubbing process, the controller  110  or  210  stops reading the program from the source storage medium (S 360 ) and then ends the dubbing process (S 365 ). During the dubbing process, the controller  110  or  210  also checks if the destination storage medium is full (S 370 ). If the destination storage medium is full, the controller  110  or  210  checks if it is required to change the destination storage medium (S 375 ). If it is not required to change the destination storage medium, the controller  110  or  210  stops reading the program from the source destination (S 360 ) and then ends the dubbing process (S 365 ). However, if it is required to change the destination storage medium, the controller  110  or  210  pauses the playback of the program, and waits for the user to change the destination storage medium (S 380 ). After a new destination storage medium is connected, the controller  110  or  210  resumes reading the program from the source storage medium (S 390 ). During the dubbing process, the controller  110  or  210  also checks if the program is completely dubbed (S 395 ). If the program is completely dubbed, the controller  110  or  210  stops the dubbing process (S 365 ). In some cases where the destination storage medium is not a removable storage medium such as a hard disk, the controller  110  or  210  stops the dubbing process when the destination storage medium is full. In such cases, the dubbing flow goes from step S 370  to step S 360  directly.  
         [0009]     Some error conditions and user operations may interrupt the dubbing process, such as power failure, power off, writing failure, or temporary stop by a user. After dubbing is interrupted, if the user wants to dub again, the dubbing process must be re-started from the very beginning, causing waste of time or waste of DVD disk space. Therefore, various methods are proposed to overcome these drawbacks.  
       SUMMARY  
       [0010]     One objective of the claimed embodiments is to provide a program transferring method and apparatus thereof to solve the above problem.  
         [0011]     According to an embodiment, a program transferring method is disclosed. The method includes: selecting a program in a first storage medium; transferring the program from the first storage medium to a second storage medium; and generating a label for identifying the transferring status of the program.  
         [0012]     According to another embodiment, a program transferring method is disclosed. The method includes: retrieving a recovery information from a program, the recovery information being used for resuming a transferring process; and transferring the program from a first storage medium to a second storage medium according to the recovery information.  
         [0013]     According to another embodiment, an apparatus for transferring a program is disclosed. The apparatus includes a first storage medium, a second storage medium, and a controller. The first storage medium is utilized to store a program, and the controller is coupled to the first storage medium and the second storage medium. The controller transfers the program from the first storage medium to the second storage medium and generates a label for identifying the transferring status of the program.  
         [0014]     According to still another embodiment, an apparatus for transferring a program is disclosed. The apparatus includes a first storage medium, a second storage medium, and a controller. The first storage medium is utilized to store a program, and the controller is coupled to the first storage medium and the second storage medium. The controller retrieves recovery information from the program and transfers the program from a first storage medium to a second storage medium according to the recovery information, wherein the recovery information is utilized for resuming a transferring process.  
         [0015]     These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0016]      FIG. 1  shows a fast copy dubbing system according to the related art.  
         [0017]      FIG. 2  shows a transcode dubbing system according to the related art.  
         [0018]      FIG. 3  shows a dubbing flow of the fast copy dubbing system of  FIG. 1  or the transcode dubbing system of  FIG. 2 .  
         [0019]      FIG. 4  shows a fast copy dubbing system of a first embodiment.  
         [0020]      FIG. 5  shows a transcode dubbing system of a second embodiment.  
         [0021]      FIG. 6  is a flow chart illustrating a first recovery method of a dubbing system.  
         [0022]      FIG. 7  is a flow chart illustrating a second recovery method of a dubbing system.  
         [0023]      FIG. 8  is a flow chart illustrating a third recovery method of a dubbing system.  
         [0024]      FIG. 9  is the continued flow chart of  FIG. 8 . 
     
    
     DETAILED DESCRIPTION  
       [0025]     Please refer to  FIGS. 4 and 5 .  FIG. 4  is a fast copy dubbing system  400  of a first embodiment, and  FIG. 5  is a transcode dubbing system  500  of a second embodiment. The fast copy dubbing system  400  includes a controller  410 , a source storage medium  420 , a destination storage medium  430 , and a memory  440 . The controller  410  includes a CPU  412 , and a DRAM  414 . The CPU  412  first de-multiplexes the program in the source storage medium  420  and then stores the temporary de-multiplexed program in the DRAM  414 . The CPU  412  re-multiplexes the temporary program in the DRAM  414  to the destination storage medium  430 . Some program-related information initially stored in the source storage medium  420  is also temporarily moved to the DRAM  414  and then written to the destination storage medium  430 . The transcode dubbing system  500  includes a controller  510 , a source storage medium  520 , a destination storage medium  530 , and a memory  540 . The controller  510  includes a CPU  512 , a DRAM  514 , an encoder  516 , and a decoder  518 . The CPU  512  first de-multiplexes the program in the source storage medium  520  and then stores the temporarily de-multiplexed program in the DRAM  514 . The CPU  512  optionally controls the decoder  518  to fully or partially decode the temporary de-multiplexed program. The decoded program is stored in the DRAM  514 . The CPU  512  further optionally controls the encoder  516  to re-encode the program in the DRAM  514  and then the CPU  512  re-multiplexes the re-encoded program to the destination storage medium  530 . The CPU  512  also generates some program-related information and then stores it in the destination storage medium  530 . The source storage medium  420  or  520  and the destination storage medium  430  or  530  can be an optical disk, a magnetic disk, or a magnetic-optical disk.  
         [0026]     A recovery method of a dubbing system is provided and illustrated in  FIG. 6 . The recovery method can be applied to both the fast copy dubbing system  400  and the transcode dubbing system  500 . Herein the symbol ‘/’ is utilized to mean ‘or’. When the controller  410 / 510  transfers the program from the source storage medium  420 / 520  to the destination storage medium  430 / 530 , or more specifically, when the controller  410 / 510  reads the program in the source storage medium  420 / 520 , and then stores the program in the destination storage medium  430 / 530 , the controller  410 / 510  generates a label for identifying a transferring status of the program. A detailed description of the recovery method is described below.  
         [0027]     Initially, the controller  410 / 510  determines which program in the source storage medium  420 / 520  is selected by a user (S 610 ). Next, the controller  410 / 510  checks if the label for the selected program exists (S 612 ). If the label for the selected program exists, the controller  410 / 510  checks if the user wants to start the dubbing process from a point indicated by the label (S 614 ); if not, the controller  410 / 510  will start to transfer the program. If the user wants to start the dubbing process from a point indicated by the label, the controller  410 / 510  determines the start point of the dubbing process by referring to the label (S 616 ); if not, the controller  410 / 510  will start to transfer the program. The controller  410  skips the decoding and encoding steps (S 620  and S 630 ) and directly checks if a writing error occurs in the destination storage medium (S 640 ); on the other hand, the controller  510  decodes and encodes the program (S 620  and S 630 ) if necessary, and then also checks if a writing error occurs in the destination storage medium (S 640 ).  
         [0028]     When the dubbing process is in progress, the controller  410 / 510  checks if a writing error occurs in the destination storage medium (S 640 ) and checks if the user wants to stop the dubbing process (S 650 ) as well. If a writing error occurs or the user stops the dubbing process, the controller  410 / 510  stops reading the program from the source storage medium  420 / 520 , generates a label to identify the transferring status of the program (S 660 ), and then ends the dubbing process (S 665 ). The label can be stored in the source storage medium  420 / 520 , the destination storage medium  430 / 530 , or the memory  440 / 540 . The memory  440 / 540  can be a non-volatile memory, such as an EEPROM or a flash memory. The label can indicate time information, physical information, or logic position information of the program. As mentioned above, the program can be an audio file, a video file, an audio/video file, or a multimedia file. When these kinds of files are utilized during a playback process, a time axis is usually utilized to indicate at what time the file is now playing. When the label indicates the time information of the program, it indicates a time point when the dubbing process is interrupted (e.g. 18 minutes 32 seconds or 2 hours 3 minutes). The physical information of the program indicates the physical position of the source storage medium or the destination storage medium. For example, the physical position can be a certain head of a hard disk. The logic position information indicates the logic position of the program where the program is interrupted. For example, the logic position can indicate the relative position of the interrupted point with respect to the initial point of the program. Moreover, if the source storage medium  420 / 520  is a removable storage medium, the label further comprises information to identify the source storage medium that contains the program. Similarly, if the destination storage medium  430 / 530  is a removable storage medium, the label further comprises information to identify the destination storage medium that contains the program. In this case, the controller  410 / 510  can identify if the source storage medium  420 / 520  or the destination storage medium  430 / 530  contains the program by directly checking the label.  
         [0029]     During the dubbing process, the controller  410 / 510  also checks if the destination storage medium is full (S 670 ). If the destination storage medium is full, the controller  410 / 510  checks if it is required to change the destination storage medium (S 675 ); if not, the controller  410 / 510  checks if the dubbing process is completed (S 695 ). If it is required to change the destination storage medium, the controller  410 / 510  pauses the playback of the program, waits for the user to change the destination storage medium, and generates the label (S 680 ); if not, the controller  410 / 510  stops reading the program from the source storage medium, generates a label to identify the transferring status of the program (S 660 ), and then ends the dubbing process (S 665 ). After a new destination storage medium is connected, the controller  410 / 510  resumes reading the program from the source storage medium (S 690 ) to continue the dubbing process. Finally, if the program is completely transferred, the controller  410 / 510  stops the dubbing process (S 665 ). In some cases where the destination storage medium  430 / 530  is not a removable storage medium such as a hard disk, the controller  410 / 510  stops the dubbing process when the destination storage medium  430  or  530  is full. In such cases, the dubbing flow goes directly from step S 670  to step S 660 .  
         [0030]     As to the transcode dubbing system  500 , the controller  510  utilizes the encoder  516  and the decoder  518  to optionally encode and decode the program. The controller  510  can utilize the decoder  518  to directly decode the program in the source storage medium  520  to generate a decoded program, and then store the decoded program in the destination storage medium  530 . Alternatively, the controller  510  can utilize the encoder  516  to directly encode the program in the source storage medium  520  to generate an encoded program, and then store the encoded program in the destination storage medium  530 . In addition, the controller  510  can utilize the decoder  518  and the encoder  516  together to first decode the program in the source storage medium  520  to generate a decoded program, and then encode the decoded program into an encoded program. The controller  510  further stores the encoded program in the destination storage medium  530 . However, please note that the first decoded and then encoded program has either a different coding scheme or coding rate, or both, from that of the original program.  
         [0031]     A second recovery method of a dubbing system is provided and illustrated in  FIG. 7 . Initially, the controller  410 / 510  determines which program in the source storage medium  420 / 520  is selected by a user (S 710 ). Next, the controller  410 / 510  checks if the label for the selected program exists (S 712 ). If the label for the selected program exists, the controller  410 / 510  checks if the user wants to start the dubbing process from a point indicated by the label (S 714 ); if not, the controller  410 / 510  starts to transfer the program. If the user wants to start the dubbing process from a point indicated by the label, the controller  410 / 510  determines the start point of the dubbing process by referring to the label (S 716 ); if not, the controller  410 / 510  starts to transfer the program. The controller  410  skips the decode and encode steps (S 720  and S 730 ). Every time before checking if a writing error occurs in the destination storage medium (S 740 ), the controller  410  generates the label to identify the transfer status of the program (S 735 ). More specifically, every predetermined time interval, every predetermined recording length or any interval that determined by any method, a label is generated by the dubbing system. On the other hand, the controller  510  decodes and encodes the program (S 720  and S 730 ) if necessary, and then also generates the label to identify the transferring status of the program (S 735 ) before checking if a writing error occurs in the destination storage medium (S 740 ).  
         [0032]     When the dubbing process is in progress, the controller  410 / 510  checks if a writing error occurs in the destination storage medium (S 740 ) and checks if the user wants to stop the dubbing process (S 750 ) as well. If a writing error occurs or the user stops the dubbing process, the controller  410 / 510  stops reading the program from the source storage medium  420 / 520  (S 760 ), and then ends the dubbing process (S 765 ).  
         [0033]     During the dubbing process, the controller  410 / 510  also checks if the destination storage medium is full (S 770 ). If the destination storage medium is full, the controller  410 / 510  checks if it is required to change the destination storage medium (S 775 ); if not, the controller  410 / 510  checks if the dubbing process is completed (S 795 ). If it is required to change the destination storage medium, the controller  410 / 510  pauses the playback of the program and waits for the user to change the destination storage medium (S 780 ); if not, the controller  410 / 510  stops reading the program from the source storage medium (S 760 ), and then ends the dubbing process (S 765 ). After a new destination storage medium is connected, the controller  410 / 510  resumes reading the program from the source storage medium (S 790 ) to continue the dubbing process. Finally, if the program is completely transferred, the controller  410 / 510  clears the label (S 796 ) and then stops the dubbing process (S 765 ). In some cases where the destination storage medium  430 / 530  is not a removable storage medium such as a hard disk, the controller  410 / 510  stops the dubbing process when the destination storage medium  430 / 530  is full. In such cases, the dubbing flow goes directly from step S 770  to step S 760 .  
         [0034]     A third recovery method of a dubbing system is provided and illustrated in  FIG. 8  and  FIG. 9 . When the dubbing system  400  or  500  is powered on, or when a destination storage medium is inserted (S 810 ), the controller  410 / 510  checks the destination storage medium and determines if it is required to perform a recovery method, e.g. a title recovery method, to find a recovery information stored in the destination storage medium (S 811 ). If it is not required to perform a recovery method, the dubbing process ends (S 818 ). The title recovery method is a mechanism that can process audio data, video data, or audio/video data in the destination storage medium to find the whole title. The title recovery method is usually utilized to recover one title while a recording process or a dubbing process fails. For example, the title recovery mechanism identifies a specific symbol in the destination storage medium to find the title end and then reconstructs the title integrity. By utilizing the title recovery method, a dubbing system can trace back the point where the dubbing process fails. Because the recovery information of the third recovery method is stored in the destination storage medium, the memory  440 / 540  of the dubbing system  400 / 500  is optional.  
         [0035]     If performing a recovery method is necessary, the controller  410 / 510  performs the title recovery method on the destination storage medium  430 / 530  and generates the recovery method (S 812 ). The controller  410 / 510  then checks if the recovered title failed in the previous dubbing process (S 813 ). If the recovered title did not fail in the previous dubbing process, the dubbing process ends (S 818 ), otherwise, the controller  410 / 510  checks if the source program related to the recovered title exists in the source storage medium  420 / 520  (S 814 ). If the source program does not exist, the dubbing process ends (S 818 ), otherwise, the controller  410 / 510  checks if the user wants to perform the dubbing process (S 815 ). If the user does not want to perform the dubbing process, the dubbing process ends (S 818 ), otherwise, the controller  410 / 510  checks if the user wants to perform the dubbing process from a start point indicated by the recovery information (S 816 ). If the user does not want to perform the dubbing process from the start point, the controller  510  decodes and encodes the program (S 820  and S 830 ) if necessary; however the controller  410  skips these two steps. If the user wants to perform the dubbing process from a start point, the controller  410 / 510  determines the start point of the dubbing process by referring to the recovery information (S 817 ).  
         [0036]     During the dubbing process, the controller  410 / 510  stores not only the program but also the recovery information into the destination storage medium  430 / 530  (S 835 ). The controller  410 / 510  checks if a writing error occurs in the destination storage medium (S 840 ) and checks if the user wants to stop the dubbing process (S 850 ) as well. If a writing error occurs or the user stops the dubbing process, the controller  410 / 510  stops reading the program from the source storage medium  420 / 520  (S 860 ), and then ends the dubbing process (S 865 ).  
         [0037]     During the dubbing process, the controller  410 / 510  also checks if the destination storage medium is full (S 870 ). If the destination storage medium is full, the controller  410 / 510  checks if it is required to change the destination storage medium (S 875 ); if not, the controller  410 / 510  checks if the dubbing process is completed (S 895 ). If it is required to change the destination storage medium, the controller  410 / 510  pauses the playback of the program and waits for the user to change the destination storage medium (S 880 ); if not, the controller  410 / 510  stops reading the program from the source storage medium (S 860 ), and then ends the dubbing process (S 865 ). After a new destination storage medium is connected, the controller  410 / 510  resumes reading the program from the source storage medium (S 890 ) to continue the dubbing process. Finally, if the program is completely transferred, the controller  410 / 510  stores information in the destination storage medium  430 / 530  to indicate that the dubbing process is completed (S 896 ) and then stops the dubbing process (S 865 ). In some cases where the destination storage medium  430 / 530  is not a removable storage medium such as a hard disk, the controller  410 / 510  stops the dubbing process when the destination storage medium  430 / 530  is full. In such cases, the dubbing flow goes directly from step S 870  to step S 860 .  
         [0038]     Three recovery methods are disclosed in the embodiments to facilitate the dubbing process. The first method generates a label to indicate the dubbing status when the dubbing process is interrupted due to a writing error or by the user. The second recovery method generates a label to indicate the dubbing status every predetermined time interval, every predetermined data length of recording or any interval that determined by any method. After the dubbing process is completed, the label is cleared. The third recovery method performs a recovery method to retrieve recovery information stored in the destination storage medium by checking the destination storage medium. By referring to the label or the recovery information, the dubbing process can be resumed from the last stop point where the dubbing process is interrupted instead of from the very beginning of the program.  
         [0039]     Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.