WO2010067505A1 - 画像復号化装置および画像復号化方法 - Google Patents

画像復号化装置および画像復号化方法 Download PDF

Info

Publication number
WO2010067505A1
WO2010067505A1 PCT/JP2009/005648 JP2009005648W WO2010067505A1 WO 2010067505 A1 WO2010067505 A1 WO 2010067505A1 JP 2009005648 W JP2009005648 W JP 2009005648W WO 2010067505 A1 WO2010067505 A1 WO 2010067505A1
Authority
WO
WIPO (PCT)
Prior art keywords
slice
stream
divided
unit
decoding
Prior art date
Application number
PCT/JP2009/005648
Other languages
English (en)
French (fr)
Inventor
吉松直樹
岩橋大輔
田中健
Original Assignee
パナソニック株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by パナソニック株式会社 filed Critical パナソニック株式会社
Priority to JP2010541968A priority Critical patent/JP5341104B2/ja
Priority to CN200980104202.8A priority patent/CN101939994B/zh
Priority to US12/866,430 priority patent/US20100322317A1/en
Priority to EP09831614A priority patent/EP2357825A4/en
Publication of WO2010067505A1 publication Critical patent/WO2010067505A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • the present invention relates to an image decoding apparatus and an image decoding method for decoding a coded stream obtained by coding image data, and more particularly to an image decoding apparatus and an image decoding method for executing decoding in parallel.
  • An image coding apparatus that encodes a moving image divides each picture constituting the moving image into macroblocks and encodes each of the macroblocks. Then, the image coding apparatus generates a coded stream indicating a coded moving image.
  • FIG. 28 shows the structure of a picture to be encoded.
  • a picture is divided into macroblocks of 16 ⁇ 16 pixels and encoded.
  • a slice is composed of a plurality of macroblocks included in the picture, and a picture is composed of a plurality of slices.
  • a structural unit having one column of a plurality of macroblocks arranged in the horizontal direction from the left end to the right end of a picture is referred to as a macroblock line (MB line).
  • FIG. 29 shows the structure of a coded stream.
  • the encoded stream is hierarchized and, as shown in (a) of FIG. 29, includes a header and a plurality of pictures arranged in the order of encoding.
  • the above-mentioned header includes, for example, a sequence parameter set (SPS) which is referred to in order to decode a sequence of a plurality of pictures.
  • the encoded picture is configured to include a header and a plurality of slices as shown in (b) of FIG. 29, and the slice is a header and as shown in (c) of FIG. , And a plurality of macroblocks (MB).
  • the header at the beginning of the picture shown in (b) of FIG. 29 includes, for example, a picture parameter set (PPS) to be referred to for decoding the picture.
  • PPS picture parameter set
  • FIG. 30 shows a configuration of a conventional image decoding apparatus.
  • the image decoding apparatus 300 includes a memory 310 and a decoding engine 320.
  • the memory 310 includes a stream buffer 311 having an area for storing a coded stream, and a frame memory 312 having an area for storing decoded image data output from the decoding engine 320.
  • the image decoding apparatus 300 stores the encoded image data in the stream buffer 311 when sequentially obtaining encoded image data such as macroblocks and pictures included in the encoded stream from the top side.
  • the decoding engine 320 sequentially reads and decodes encoded image data from the stream buffer 311 in decoding order, and stores the decoded image data generated by the decoding in the frame memory 312. In addition, when decoding, the decoding engine 320 decodes the encoded image data while referring to the decoded image data already stored in the frame memory 312.
  • the decoded image data stored in the frame memory 312 is output to the display device in display order and displayed.
  • FIG. 31 shows a structure of the decoding engine 320. As shown in FIG.
  • the decoding engine 320 includes an entropy decoding unit 321, an inverse conversion unit 322, an adder 323, a deblocking filter 324, a motion compensation unit 325, a weighted prediction unit 326, an intra prediction unit 327, and a switch 328.
  • the entropy decoding unit 321 entropy-decodes the encoded image data to generate quantization data indicating a quantization value, and outputs the quantization data to the inverse transform unit 322.
  • the inverse transform unit 322 transforms the quantized data into differential image data by performing inverse quantization and inverse orthogonal transform on the quantized data.
  • the adder 323 adds decoded image data by adding the difference image data output from the inverse conversion unit 322 and the predicted image data output from the weighted prediction unit 326 or the in-screen prediction unit 327 via the switch 328. Generate
  • the deblocking filter 324 removes the coding distortion included in the decoded image data generated by the adder, and stores the decoded image data from which the coding distortion has been removed in the frame memory 312.
  • the motion compensation unit 325 reads out the decoded image data stored in the frame memory 312 and performs motion compensation to generate predicted image data, and outputs the predicted image data to the weighted prediction unit 326.
  • the weighted prediction unit 326 weights the prediction image data output from the motion compensation unit 325, and outputs the result to the switch 328.
  • the in-screen prediction unit 327 performs in-screen prediction. That is, the in-screen prediction unit 327 generates predicted image data by performing in-screen prediction using the decoded image data generated by the adder 323 and outputs the generated predicted image data to the switch 328.
  • the switch 328 outputs the predicted image data output from the in-screen prediction unit 327 to the adder 323 when the differential image data output from the inverse conversion unit 322 is generated by the in-screen prediction. In addition, when the differential image data output from the inverse transform unit 322 is generated by inter-frame prediction, the switch 328 outputs the predicted image data output from the weighted prediction unit 326 to the adder 323.
  • FIG. 32 is an explanatory diagram for explaining HD and 4k2k.
  • the HD encoded stream is distributed by terrestrial digital broadcasting, BS digital broadcasting, etc., and a picture of resolution "1920 ⁇ 1080 pixels" is decoded and displayed at a frame rate of 30 frames per second.
  • the 4k2k coded stream will be trially distributed in advanced BS digital broadcasting from 2011, and pictures of resolution "3840 x 2160 pixels” will be decoded and displayed at a frame rate of 60 frames per second .
  • 4k2k has twice as high resolution and two times the frame rate in both vertical and horizontal respectively than HD.
  • the processing load on the decoding engine of the image decoding apparatus is increased.
  • the decoding engine 320 of the image decoding apparatus 300 shown in FIG. 30 requires a practically difficult operating frequency of 1 GHz or more when decoding a 4k2k coded stream. Therefore, parallel processing of decoding is being studied.
  • FIG. 33 is a block diagram showing an example of the configuration of an image decoding apparatus that executes parallel processing of decoding.
  • the image decoding apparatus 400 includes a memory 310 and a decoder 420.
  • N decoding engines 421 first decoding engine 421 to Nth decoding engine 421) extracts a portion to be processed by itself from the encoded stream stored in stream buffer 311, and the extracted portion Are decoded and output to the frame memory 312.
  • FIG. 34A and FIG. 34B are explanatory diagrams for explaining an example of parallel processing of decoding.
  • the image decoding apparatus 400 acquires a coded stream composed of four area coded streams and stores the coded stream in the stream buffer 311.
  • Each of the four area coded streams is an independent stream, and as shown in FIG. 34A, is a stream showing a moving image of one area of one screen divided into four equal parts.
  • the image decoding apparatus 400 obtains a coded stream including a picture consisting of four slices and stores the coded stream in the stream buffer 311. Four slices are generated by vertically dividing the picture into four equal parts, as shown in FIG. 34B.
  • an image decoding apparatus that decodes in parallel a coded stream representing a moving image coded according to the standard without adding constraints or changes to such operation standard.
  • Patent Document 1 and Patent Document 2 separate the pictures of the encoded stream generated by MPEG-2 for each slice, and execute the decoding process of each slice in parallel.
  • Patent Document 3 the image decoding apparatus of Patent Document 3 is described in the following.
  • the picture of the encoded stream generated by H.264 / AVC is separated for each MB line, and the decoding process of each MB line is executed in parallel.
  • FIG. 35 is an explanatory diagram for describing a decoding process by the image decoding apparatus of Patent Document 3.
  • the first decoding engine of the image decoding apparatus decodes the 0th MB line in the picture
  • the second decoding engine decodes the 1st MB line in the picture
  • the third decoding engine Decode the second MB line in the picture.
  • each decoding engine sequentially decodes the macroblocks from the left end to the right end of the MB line.
  • the decoding of the macroblock there is a dependency between the macroblock to be decoded and the macroblocks on the left, top left, top, and top right as viewed from the macroblock to be decoded. That is, when decoding each macroblock, each decoding engine needs information obtained by decoding the left, upper left, upper, and upper right macroblocks from the viewpoint of the macroblock to be decoded. Therefore, each decoding engine starts decoding the macroblock to be decoded after the decoding of those macroblocks is completed.
  • each decoding engine of the decoding target macroblock after decoding of the other macroblocks is completed. Start decryption. That is, the image decoding apparatus executes decoding of the macro blocks located at the position of Keima in parallel.
  • the image decoding apparatus of Patent Document 4 is based on H.264.
  • a coded stream generated by H.264 / AVC is obtained, a row header is inserted at the MB line boundary of the coded stream, and decoding processing of each MB line is executed in parallel.
  • Each decoding engine of this image decoding apparatus uses the row header as a mark to extract the MB line to be processed from itself from the encoded stream, and executes decoding of the MB line.
  • Patent Documents 1 to 4 have a problem that parallel processing of decoding can not be appropriately performed, and a problem that the configuration of the apparatus becomes complicated.
  • the picture is divided into slices and decoding of a plurality of slices is performed in parallel.
  • Parallel processing of decoding can not be appropriately performed on a coded stream in which the size and position of a slice are arbitrarily set as in the H.264 / AVC coded stream.
  • load bias occurs in each of the plurality of decoding engines provided in the image decoding apparatus, and decoding that effectively utilizes parallel processing can not be performed. For example, if one picture is composed of one slice, the picture can not be divided, and one decoding engine has to perform decoding of the entire picture.
  • H.264, H.264, and H.323 are included.
  • the slice included in the H.264 / AVC picture may be divided. In this case, it is necessary to provide each decoding engine with a function to appropriately recognize a part of the divided slice as a slice, which complicates the configuration of the image decoding apparatus.
  • an object of the present invention is to provide an image decoding apparatus and an image decoding method that appropriately execute parallel processing of decoding with a simple configuration.
  • an image decoding apparatus is an image decoding apparatus that decodes a coded stream obtained by coding image data, and obtaining the coded stream Unit, and for each encoded picture included in the encoded stream acquired by the acquisition unit, the encoded picture is divided into a plurality of constituent units, and each of the plurality of constituent units is N to be generated.
  • a stream division unit that generates N divided streams by allocating to any part of (N is an integer of 2 or more) divided streams, and N divided streams generated by the stream division unit And N decoding units for decoding each in parallel, and the stream division unit generates the N divided streams by using the encoded picture.
  • a slice partial group consisting of at least one slice part allocated to the divided stream for each of the divided streams is the N decodings
  • the slice portion group is reconstructed as a new slice so that any one of the slicer units is recognized as a slice, and at least two consecutive slice portions in the encoded stream among the plurality of slice portions are
  • one of the plurality of split streams is set such that the dependency is a new dependency according to the anteroposterior relationship of the slice portions in each split stream.
  • Set the codeword to at least one split stream It allows reconstructing the slice subgroup as a new slice.
  • the coded picture is divided into constituent units such as a plurality of macroblock lines, for example, and each of the plurality of macroblock lines is allocated to N decoding units as part of a divided stream and decoded.
  • the burden of decoding processing by the N decoding units can be equalized, and parallel processing of decoding can be appropriately performed.
  • H. Even if the H.264 / AVC coded picture is composed of one slice, the coded picture is divided into a plurality of macroblock lines, so that decoding of one slice is performed by one decoding unit.
  • the burden can be evenly shared by the N decoding units without burdening.
  • slices across a plurality of macroblock lines may be divided into a plurality of slice portions, and those slice portions may be allocated to different division streams. . That is, one divided stream does not include the entire slice of a coded picture, but includes a slice portion group configured by gathering one or more slice portions that are fragments of the slice.
  • the front-rear relationship in units of macroblock lines is different from that before the encoded picture is divided. Therefore, when a plurality of consecutive macroblock lines have a dependency by a predetermined code word, the dependency can not be maintained, and the decoding unit can not decode the divided stream as it is.
  • a code word is set to the divided stream according to the new context of consecutive macroblock lines in such a slice partial group.
  • the coded picture is a picture coded for each block of a predetermined number of pixels
  • the predetermined code word is the number of consecutive specific types of blocks in a slice included in the coded picture.
  • the stream division unit is configured to calculate the number of blocks in which the first code word included in the coded stream is continuous across at least two consecutive slice portions in the coded stream. Indicates that when the at least two slice portions have a dependency, the at least two successive slice portions respectively allocate the first code word modified to indicate the number of blocks for each slice portion. By setting the slice sub-groups to new It is preferable to reconstruct a scan.
  • the decoding unit can appropriately decode the first code word without performing special processing.
  • the stream division unit further generates the plurality of first code words when a plurality of blocks corresponding to a plurality of first code words set in each divided stream are continuous in the divided stream.
  • the slice portion group is reconstructed as a new slice by converting it into one code word indicating a total sum of the numbers indicated by each of the plurality of first code words.
  • the decoding unit that decodes the divided stream can appropriately decode the first codeword without performing special processing.
  • the coded picture is a picture coded for each block of a predetermined number of pixels
  • the predetermined code word is an amount of change in coding coefficient between blocks in a slice included in the coded picture.
  • the second code word indicating the second code word, and the stream division unit indicates an amount of change between blocks in which the second code word included in the coded stream straddles two consecutive slice portions in the coded stream.
  • the decoding unit that decodes the divided stream can restore the coding coefficient from the second code word without performing special processing.
  • the stream division unit may set the second code word corrected to the calculated change amount to the divided stream.
  • the decoding unit that decodes the divided stream can restore the coding coefficient from the second code word without performing special processing.
  • the stream division unit may set a new code word indicating the calculated amount of change and the second code word in the divided stream.
  • each divided stream is newly added to the divided stream so that an appropriate value is calculated based on the second code word.
  • the code word is inserted. Therefore, the decoding unit that decodes the divided stream can restore the coding coefficient from the second code word without performing special processing.
  • the stream division unit restores the coding coefficient for each block using the second code word included in the coded stream, and uses the restored coding coefficient to generate a new block of each divided stream.
  • the amount of change in coding coefficients may be calculated based on the context.
  • the stream division unit accumulates, for each of the divided streams, the variation indicated by the second code word included in the division streams other than the division stream, and using the accumulated variation, blocks in each division stream
  • the change amount of the coding coefficient may be calculated based on the new context of.
  • the stream division unit resets the accumulated change amount to 0 at a slice boundary when the change amount indicated by the second code word is accumulated.
  • the present invention can not only be realized as such an image decoding apparatus, but also as a method, a program, a storage medium for storing the program, and an integrated circuit.
  • the image decoding apparatus has the advantage of being able to appropriately execute parallel processing of decoding with a simple configuration.
  • FIG. 1 is a block diagram showing a configuration of an image decoding apparatus according to Embodiment 1 of the present invention.
  • FIG. 2A is a diagram showing the order of decoding in the case where a picture according to Embodiment 1 of the present invention is not configured by MBAFF.
  • FIG. 2B is a diagram showing the order of decoding in the case where a picture according to Embodiment 1 of the present invention is configured by MBAFF.
  • FIG. 3 is an explanatory diagram for describing a process of inserting a slice header according to Embodiment 1 of the present invention.
  • FIG. 4 is an explanatory diagram for describing update processing of MB address information in the first embodiment of the present invention.
  • FIG. 5 is an explanatory diagram for explaining slice termination processing in the first embodiment of the present invention.
  • FIG. 6 is a flowchart showing an overall operation of the image decoding apparatus in the first embodiment of the present invention.
  • FIG. 7 is a block diagram showing a configuration of a stream division unit in Embodiment 1 of the present invention.
  • FIG. 8 is an explanatory diagram for describing operations of the slice header insertion unit and the slice data processing unit in the first embodiment of the present invention.
  • FIG. 9 is a block diagram showing a configuration of a slice header insertion unit according to Embodiment 1 of the present invention.
  • FIG. 10 is a diagram showing MB lines and slice headers allocated to the first to fourth regions of the split stream buffer in the first embodiment of the present invention.
  • FIG. 11A is a diagram showing a position where slice end information is set in Embodiment 1 of the present invention.
  • FIG. 11A is a diagram showing a position where slice end information is set in Embodiment 1 of the present invention.
  • FIG. 11B is a diagram showing a position where slice end information is set in Embodiment 1 of the present invention.
  • FIG. 12 is a flowchart showing the operation of the division point detection unit in the first embodiment of the present invention.
  • FIG. 13A is an explanatory diagram for describing a correction process of MB skip run information in the first embodiment of the present invention.
  • FIG. 13B is an explanatory diagram for describing a correction process of MB skip run information in the first embodiment of the present invention.
  • FIG. 14 is a block diagram showing the configuration of the skip run correction unit in the first embodiment of the present invention.
  • FIG. 15 is a flowchart showing an operation of correcting MB skip run information by the skip run correction unit according to the first embodiment of the present invention.
  • FIG. 16A is an explanatory diagram for describing a correction process of the QP variation in the first embodiment of the present invention.
  • FIG. 16B is an explanatory diagram for describing a correction process of the QP variation in the first embodiment of the present invention.
  • FIG. 17 is an explanatory diagram for explaining accumulation of the QP variation in the first embodiment of the present invention.
  • FIG. 18 is a flowchart showing correction processing of the QP variation by the QP delta correction unit according to the first embodiment of the present invention.
  • FIG. 19A is an explanatory diagram for describing high resolution decoding in the first embodiment of the present invention.
  • FIG. 19B is an explanatory diagram for illustrating high speed decoding in the first embodiment of the present invention.
  • FIG. 19C is an explanatory diagram for describing multi-channel decoding in the first embodiment of the present invention.
  • FIG. 20 is a block diagram showing a configuration of an image decoding apparatus according to Embodiment 2 of the present invention.
  • FIG. 21 is a block diagram showing a configuration of a stream division unit according to Embodiment 2 of the present invention.
  • FIG. 22 is an explanatory diagram for describing MB skip run information correction processing and QP variation insertion processing according to the second embodiment of the present invention.
  • FIG. 23 is a block diagram showing the configuration of the skip run correction unit in the second embodiment of the present invention.
  • FIG. 24 is a flowchart showing an operation of correcting MB skip run information by the skip run correction unit in the second embodiment of the present invention.
  • FIG. 25 is a flowchart showing insertion processing of the accumulated QP variation by the QP delta insertion unit according to the second embodiment of the present invention.
  • FIG. 26 is a diagram showing an application example of the image decoding apparatus according to the embodiment of the present invention.
  • FIG. 27 is a block diagram showing the minimum configuration of the image decoding apparatus according to the embodiment of the present invention.
  • FIG. 28 shows the structure of a picture to be encoded.
  • FIG. 29 shows the structure of a coded stream.
  • FIG. 30 shows a configuration of a conventional image decoding apparatus.
  • FIG. 31 shows a structure of a conventional decoding engine.
  • FIG. 32 is an explanatory diagram for explaining HD and 4k2k.
  • FIG. 33 is a block diagram showing a configuration of an image decoding apparatus that executes conventional decoding parallel processing.
  • FIG. 34A is an explanatory diagram for describing an example of conventional decoding parallel processing.
  • FIG. 34B is an explanatory diagram for describing an example of conventional decoding parallel processing.
  • FIG. 35 is an explanatory diagram for describing a decoding process by a conventional image decoding apparatus.
  • FIG. 1 is a block diagram showing a configuration of an image decoding apparatus according to Embodiment 1 of the present invention.
  • the image decoding apparatus 100 is an apparatus that appropriately executes parallel processing of decoding with a simple configuration, and includes a decoder 110 and a memory 150.
  • the memory 150 has an area for storing data input to the decoder 110, data intermediately generated by the decoder 110, and data finally generated and output by the decoder 110.
  • the memory 150 includes a stream buffer 151, a divided stream buffer 152, and a frame memory 153.
  • the stream buffer 151 stores the encoded stream generated and transmitted by the image encoding device. That is, in the present embodiment, the stream buffer 151 is configured as an acquisition unit that acquires a coded stream.
  • the divided stream buffer 152 stores N divided streams generated by the decoder 110 as the above-described intermediately generated data.
  • the frame memory 153 the N divided decoded image data generated by the N decoding engines (decoding units) 120 are stored as the data that is ultimately generated and output as described above.
  • the decoded image data is stored in the frame memory 153, read by the display device, and displayed as a moving image.
  • the decoder 110 reads out and decodes the encoded stream stored in the stream buffer 151 of the memory 150 to generate decoded image data, and stores the decoded image data in the frame memory 153 of the memory 150.
  • the decoder 110 also includes a stream division unit 130 and N decoding engines (first to N-th decoding engines) 120.
  • the decoding engine 120 in the present embodiment has a processing capability capable of decoding an HD image (1920 ⁇ 1088 pixels, 60i) for two channels.
  • the stream division unit 130 acquires mode information to be described later, and divides the encoded stream into N divided streams (first divided stream to Nth divided stream) according to the mode information. That is, the stream division unit 130 in the present embodiment divides the picture into a plurality of MB lines for each of the coded pictures included in the coded stream. Then, the stream division unit 130 generates N divided streams by allocating each of the plurality of MB lines to any one of N divided streams to be generated.
  • the MB line is a structural unit having one row of a plurality of macroblocks arranged in the horizontal direction from the left end to the right end of the picture.
  • the stream division unit 130 divides the picture into a plurality of MB lines when the picture is not configured by MBAFF (macroblock adaptive frame field), but when the picture is configured by MBAFF,
  • the two MB lines are treated as one structural unit (hereinafter referred to as MB line pair), and the picture is divided into a plurality of MB line pairs.
  • the stream division unit 130 divides the picture into a plurality of MB lines, and sets two MB lines belonging to the MB line pair to parts of the same divided stream. assign.
  • the present invention will be described on the assumption that the picture is not composed of MBAFF.
  • different processes are required for the case where the picture is not composed of MBAFF and the case where it is composed of MBAFF.
  • the MB line is replaced with an MB line pair to explain the explanation in the case where the picture is composed of MBAFF. It can be replaced by the description of the invention.
  • the stream division unit 130 divides a picture into a plurality of MB lines, if there is a header immediately before the MB line in the encoded stream, or between two macro blocks belonging to the MB line, the header Is attached to the MB line and assigned to part of the split stream.
  • the division for each MB line by the stream division unit 130 as described above results in division of slices arranged over a plurality of MB lines included in a picture. Also, when dividing into N divided streams, the stream dividing unit 130 removes the dependency in the variable-length decoding process between macroblocks that straddle each of the N divided streams.
  • Each of the N decoding engines 120 reads out a divided stream to be processed by itself from the divided stream buffer 152, and decodes the read divided streams in parallel to generate N divided decoded image data.
  • the first decoding engine 120 reads the first divided stream from the divided stream buffer 152
  • the second decoding engine 120 reads the second divided stream from the divided stream buffer 152
  • the third decoding engine 120 divides the third divided stream.
  • Reading from the stream buffer 152 the fourth decoding engine 120 reads the fourth divided stream from the divided stream buffer 152. Then, the first decoding engine 120 to the fourth decoding engine 120 respectively decode the first divided stream to the fourth divided stream in parallel.
  • the N decoding engines 120 refer to the decoded image data already stored in the frame memory 153, and decode the divided stream by performing motion compensation as necessary. .
  • each of N decoding engines 120 decodes the macroblocks in the upper left, upper and upper right of the macroblock to be decoded when decoding a macroblock encoded by intra prediction included in the divided stream.
  • the information of those decoded macroblocks is acquired as adjacent MB information from the decoded decoding engine 120.
  • the decoding engine 120 that has acquired the adjacent MB information decodes the decoding target macroblock using the adjacent MB information. Further, even when, for example, deblocking filter processing and motion vector prediction processing are performed, the decoding engine 120 similarly decodes the information of the decoded macroblocks at the upper left, upper and upper right of the macroblock to be processed, as described above. It is acquired as adjacent MB information, and the above processing is performed.
  • N 4 in the following, in order to simplify the description.
  • the neighboring MB information is used to start decoding of the macroblock to be decoded.
  • the first decoding engine 120 to the fourth decoding engine 120 respectively decode in parallel the macroblocks located at mutually different positions in the horizontal direction in each MB line.
  • FIG. 2A is a diagram showing the order of decoding when the picture is not configured by MBAFF.
  • the first decoding engine 120 decodes the 0th MB line
  • the second decoding engine 120 decodes the first MB line
  • the third decoding engine 120 decodes the second MB line
  • the 4-decode engine 120 decodes the third MB line.
  • the k-th (k is an integer of 0 or more) MB line indicates the MB line k-th from the top of the picture.
  • the 0 MB line is the MB line 0-th from the top of the picture.
  • the first decoding engine 120 starts decoding of the 0th MB line.
  • the second decoding engine 120 starts decoding of the macroblock at the left end of the first MB line.
  • the third decoding engine 120 starts decoding of the macroblock at the left end of the second MB line.
  • the fourth decoding engine 120 starts decoding of the macroblock at the left end of the third MB line.
  • the (k + 1) th MB line is decoded from the leftmost macroblock to the rightmost macroblock with a delay of two macroblocks compared to the kth MB line.
  • FIG. 2B is a diagram showing the order of decoding when the picture is composed of MBAFF.
  • a MB line pair is a configuration unit having two columns (MB lines) of a plurality of macro blocks arranged horizontally from the left edge to the right edge of the picture. is there.
  • the MB line pair is adaptively frame / field coded for each of two macroblocks (macroblock pairs) located above and below.
  • the upper macroblock is decoded first, and then the lower macroblock is decoded.
  • the first decoding engine 120 decodes the 0 MB line pair, and the second decoding engine 120 decodes the 1 MB line pair, as in the case where the picture is not configured with MBAFF, and the third decoding engine 120 decodes the second MB line pair, and the fourth decoding engine 120 decodes the third MB line pair.
  • the k-th (k is an integer of 0 or more) MB line pair indicates a constitutional unit consisting of two MB lines located k-th from the top of the picture, for example, the 0-MB line is 0th from the top of the picture It is a structural unit consisting of two MB lines.
  • the first decoding engine 120 starts decoding of the 0-th MB line pair.
  • the second decoding engine 120 starts decoding of the upper left end macroblock of the first MB line pair.
  • the third decoding engine 120 starts decoding of the macroblock at the upper left end of the second MB line pair.
  • the fourth decoding engine 120 starts decoding of the macroblock at the upper left end of the third MB line pair.
  • the (k + 1) th MB line pair is decoded from the leftmost macroblock pair to the rightmost macroblock pair with a delay of two macroblock pairs compared to the kth MB line pair.
  • the (k + 1) -th MB line or the (k + 1) -th MB line pair is the k-th MB line or the k-th MB line It may be decoded later by at least two macroblocks or two macroblocks compared to a pair. That is, decoding may be performed with a delay of 3 macroblocks or 3 macroblock pairs or more. For example, when the (k + 1) -th MB line or the (k + 1) -th MB line pair is decoded by two macroblocks or two macroblock pairs later than the k-th MB line or the k-th MB line pair. The time required to decode a picture can be minimized, and when decoding is delayed by three macroblocks or three macroblock pairs or more, the time taken to decode a picture according to the delay amount Will be longer.
  • the feature of the image decoding apparatus 100 is that a new slice portion group formed of one or more portions (slice portions) of slices, which is generated by the division by the stream division unit 130, is used. It is to reconstruct as a slice.
  • the slice reconstruction includes slice header insertion processing, slice termination processing, MB address information update processing, skip run correction processing, and QP delta setting processing.
  • QP delta setting processing includes QP delta correction processing and QP delta insertion processing. In the present embodiment, the case where the QP delta setting process is the QP delta correction process will be described.
  • FIG. 3 is an explanatory diagram for explaining a process of inserting a slice header.
  • the stream division unit 130 divides the picture p1 shown in (a) of FIG.
  • the picture p1 is composed of slice A, slice B and slice C, and is composed of MB lines L1 to L12.
  • the slice A is disposed across the MB lines L1 to L7, and includes a slice header ha and a plurality of macroblocks mba disposed consecutively from the slice header ha.
  • the slice B is disposed across the MB lines L7 to L8, and includes a slice header hb and a plurality of macroblocks mbb sequentially disposed from the slice header hb.
  • the slice C is disposed across the MB lines L9 to L12, and includes a slice header hc and a plurality of macroblocks mbc sequentially disposed from the slice header hc.
  • the slice header includes auxiliary information necessary for decoding a slice having the slice header.
  • the stream division unit 130 divides the above picture p1 into MB lines as shown in FIG. 3 (b). Then, the stream division unit 130 allocates each of the MB lines L1 to L12 to a part of any of the first to fourth divided streams in order from the top. For example, the stream division unit 130 allocates the MB line L1 to a part of the first divided stream, allocates the MB line L2 to a part of the second divided stream, and allocates the MB line L3 to a part of the third divided stream, The MB line L4 is allocated to part of the fourth split stream. Then, when the allocation of the MB line to the fourth divided stream is completed, the stream division unit 130 repeats the allocation of the MB line to the first divided stream.
  • the stream division unit 130 allocates the MB line L5 to a part of the first divided stream, allocates the MB line L6 to a part of the second divided stream, and allocates the MB line L7 to a part of the third divided stream,
  • the MB line L8 is allocated to a part of the fourth split stream.
  • the first divided stream includes consecutive MB lines L1, L5, L9
  • the second divided stream includes consecutive MB lines L2, L6, L10
  • the third divided stream includes consecutive MB lines L3, L7
  • the fourth divided stream includes consecutive MB lines L4, L8, and L12.
  • a set of MB lines L1 to L6, a set of 6 macro blocks on the head side of MB line L7, a set of 10 macro blocks on the end side of MB line L7, and MB lines L8 to L12 are slice A, respectively. It is a slice part which constitutes a part of ⁇ C. Then, in the first divided stream, a slice portion group (slice A in the first divided stream) is configured from the MB lines L1 and L5 which are slice portions of the slice A. Also, in the second divided stream, a slice portion group (slice B in the second divided stream) is configured from the MB lines L2 and L6 which are slice portions of the slice B.
  • the first divided stream includes the continuous MB lines L1, L5, and L9 as described above.
  • MB lines L1 and L5 should be recognized as slice A
  • MB line L9 should be recognized as slice C.
  • the slice header ha of slice A needs to be arranged at the head of MB line L1 that should be the head of slice A in the first divided stream
  • MB that should be the head of slice C in the first divided stream The slice header hc of slice C needs to be arranged at the beginning of the line L9. In the example shown in FIG.
  • the stream division unit 130 performs the first processing of the MB lines L1, L5 and L9 together with the slice headers ha and hc. It suffices to assign to divided streams.
  • the second divided stream includes the continuous MB lines L2, L6, and L10 as described above.
  • MB lines L2 and L6 should be recognized as slice A
  • MB line L10 should be recognized as slice C.
  • the slice header ha of slice A needs to be arranged at the head of MB line L2 that should be the head of slice A in the second divided stream
  • MB that should be the head of slice C in the second divided stream The slice header hc of slice C needs to be arranged at the beginning of the line L10.
  • the stream dividing unit 130 in the present embodiment allocates an MB line to a part of a divided stream
  • the slice header ha ', hb', and hc ' are copied by duplicating slice headers ha, hb, and hc as necessary. Generate hc 'and insert them into the split stream.
  • the stream division unit 130 generates three duplicate slice headers ha 'by duplicating the slice header ha, and inserts the duplicate slice headers ha' immediately before the MB lines L2, L3, and L4. Furthermore, the stream segmentation unit 130 duplicates the slice header hb to generate one duplicate slice header hb ', and inserts the duplicate slice header hb' immediately before the MB line L8. Furthermore, the stream division unit 130 generates three copied slice headers hc 'by copying the slice header hc, and inserts the copied slice headers hc' immediately before the MB lines L10, L11, and L12.
  • a duplicate slice header ha ′ which is a duplicate of the slice header ha of slice A, is placed immediately before the MB line L 2 at the beginning of slice A, and MB line L 10 at the beginning of slice C.
  • a duplicate slice header hc ' which is a duplicate of the slice header hc of the slice C is disposed immediately before.
  • the stream splitting unit 130 updates the MB address information included in the duplicate slice header according to the position to be inserted.
  • the slice header of each slice constituting the picture included in the encoded stream includes MB address information "first_mb_in_slice" for specifying the address in the picture of the first macroblock of the slice. Therefore, the duplicate slice header generated by duplicating such a slice header initially includes the same MB address information as the MB address information of the duplicate slice header. As a result, if such a duplicate slice header is inserted at a different position in the picture from the slice header of the duplicate source, the address specified by the MB address information of the duplicate slice header points to an incorrect address. It will be.
  • the address specified by the MB address information of the duplicate slice header does not indicate the address in the above picture of the leading macroblock of the slice having the duplicate slice header in the split stream, but the slice having the slice header of the duplicate source. It points to the address of the start macroblock.
  • the slice header ha of the slice A of the picture p1 includes MB address information indicating the address in the picture p1 of the top macroblock (the top macroblock of the MB line L1) of the slice A.
  • the duplicate slice header ha 'generated by duplicating such a slice header ha initially includes MB address information for specifying the address in the picture p1 of the top macroblock of the MB line L1. There is.
  • the address specified by the MB address information of the duplicate slice header ha' is the duplicate slice header in the second divided stream. It does not indicate the address in the picture p1 of the start macro block of the slice A having ha '(the start macro block of the MB line L2), but indicates the address of the start macro block of the MB line L1.
  • the stream division unit 130 in the present embodiment updates the MB address information included in the copy slice header.
  • FIG. 4 is an explanatory diagram for explaining update processing of MB address information.
  • the stream division unit 130 first acquires “pic_width_in_mbs_minus1” that is information related to the number of macroblocks in the horizontal direction of the picture from the SPS (sequence parameter set) included in the encoded stream.
  • the stream division unit 130 uses the MB address information “first_mb_in_slice” included in the slice header of the copy source to calculate the address of the start macroblock of the slice having the slice header of the copy source.
  • the stream division unit 130 calculates a value “mbposv” indicating on which line of MB line the top macroblock is in the picture, based on the calculated address of the top macroblock.
  • the value "mbposv” is an integer of 0 or more.
  • the stream division unit 130 updates the MB address information initially contained in the duplicate slice header to the MB address information calculated as described above.
  • the address specified by the MB address information of the duplicate slice header correctly points to the address within the picture of the top macroblock of the slice having the duplicate slice header in the split stream.
  • slice end information indicating that the end of the slice is set. Therefore, as shown in FIG. 3, if a picture is simply divided into a plurality of MB lines, and the plurality of MB lines are respectively allocated to any part of the first to fourth divided streams, In some cases, the end of the slice included in the divided stream can not be properly recognized by the decoding engine 120.
  • the stream division unit 130 in the present embodiment executes slice termination processing as well as slice header insertion processing.
  • FIG. 5 is an explanatory diagram for explaining the slice end process.
  • the slice C included in the picture p1 of the coded stream includes a slice header hc, MB lines L9 to L12, and slice end information ec.
  • the stream division unit 130 divides the picture p1 into MB lines.
  • the MB line L9 is allocated to the first divided stream together with the slice header hc
  • the MB line L10 is allocated to the second divided stream
  • the MB line L11 is
  • the MB line L12 is assigned to the third split stream
  • the MB line L12 is assigned to the fourth split stream.
  • the stream division unit 130 duplicates the slice header hc by the above-mentioned slice header insertion processing to generate three duplicate slice headers hc ', and respectively divides the three duplicate slice headers hc' into the second split. It is inserted immediately before the MB lines L10, L11 and L12 of the stream to the fourth divided stream. Also, the stream division unit 130 updates the MB address information included in the copy slice header hc 'according to the position of the copy slice header hc' to be inserted, by the above-described MB address information update processing.
  • the stream division unit 130 performs, as slice end processing, the end of slice C (MB line L9) in the first divided stream, the end of slice C (MB line L10) in the second divided stream, and the slice in the third divided stream
  • the slice end information ec ′ indicating the end of C (MB line L11) and the end of slice C (MB line L12) in the fourth divided stream is generated.
  • the stream division unit 130 sets the generated slice end information ec 'immediately after the MB lines L9, L10, L11, and L12 of the first to fourth divided streams.
  • the stream dividing unit 130 discards the slice end information ec originally contained in the coded stream. If the slice end information ec and the slice end information ec are the same information, finally, the MB line L12 will be allocated to the fourth divided stream together with the slice end information ec '(ec).
  • each decoding engine 120 can appropriately recognize the end of the slice included in the divided stream.
  • FIG. 6 is a flowchart showing an overall operation of the image decoding apparatus 100 according to the present embodiment.
  • the image decoding apparatus 100 acquires a coded stream (step S10), and specifies a coded picture to be processed from the coded stream (step S12). Furthermore, the image decoding apparatus 100 extracts one MB line by dividing the picture to be processed (step S14). If there is a slice header immediately before the MB line or between two macro blocks belonging to the MB line, the MB line is extracted together with the slice header.
  • the image decoding apparatus 100 needs to perform slice reconstruction processing before assigning one MB line extracted by the division in step S14 to any of the first to Nth division streams to be generated. (If it is necessary to insert a slice header immediately before the MB line, if it is necessary to set slice end information immediately after the already allocated MB line, MB skip run It is determined whether it is necessary to correct the information and whether it is necessary to set the QP variation (step S16).
  • step S16 When the image decoding apparatus 100 determines in step S16 that it is necessary to perform slice reconstruction processing (Yes in step S16), the image decoding apparatus 100 executes slice reconstruction processing (step S18). That is, the image decoding apparatus 100 performs at least one of the above-mentioned slice header insertion process, slice end process, skip run correction process, and QP delta setting process.
  • slice header insertion process When the image decoding apparatus 100 executes the slice header insertion process, it also executes the MB address information update process.
  • the image decoding apparatus 100 assigns the MB line to any one of the first to Nth divided streams to be generated (step S20).
  • step S20 MB lines are sequentially assigned to the first to Nth divided streams, and the first to Nth divided streams are generated.
  • the image decoding apparatus 100 decodes in parallel the MB lines allocated to each of the first to Nth divided streams (step S22). If no MB line is assigned to any one of the first to N-th split streams, the image decoding apparatus 100 removes the remainder of the split stream to which the MB line is not assigned. Decode a split stream of
  • the image decoding apparatus 100 determines whether all the MB lines included in the picture have been allocated (step S24), and when it is determined that the MB lines are not allocated (No in step S24), the process from step S14. Run repeatedly. On the other hand, when the image decoding apparatus 100 determines that all the MB lines have been allocated (Yes in step S24), it further determines whether all the pictures included in the encoded stream have been divided (step S26). . Here, when the image decoding apparatus 100 determines that all the pictures have not been divided (No in step S26), the process from step S12 is repeatedly performed, and it is determined that all the pictures have been divided (No Yes in step S26, the decoding process is ended.
  • the processing operation shown in the flowchart of FIG. 6 is an example of the processing operation of the image decoding apparatus 100 of the present invention, and the present invention is not limited to the processing operation shown in the flowchart.
  • the stream division unit 130 of the image decoding apparatus 100 performs slice header insertion processing in the slice reconstruction processing of step S18, but does not perform slice header insertion processing.
  • the duplicate slice header may be passed directly to the decoding engine 120 which requires
  • the stream division unit 130 performs the update process of MB address information in the slice reconstruction process of step S18, but the update process may not be performed.
  • the decoding engine 120 updates MB address information of a duplicate slice header included in the divided stream.
  • the stream segmentation unit 130 performs slice termination processing in the slice reconstruction processing in step S18, but the slice reconstruction processing may not be performed.
  • the next new MB line is allocated from the stream division unit 130 to any of the divided streams.
  • slice end processing may be performed on the already allocated MB line.
  • FIG. 7 is a block diagram showing the configuration of the stream division unit 130. As shown in FIG.
  • the stream division unit 130 includes a start code detection unit 131, an EPB removal unit 132a, an EPB insertion unit 132b, a slice header insertion unit 133, and slice data processing units 134a and 134b.
  • the start code detection unit 131 reads the encoded stream from the stream buffer 151 and detects the start code for each NAL unit.
  • the EPB removing unit 132a removes the EPB (emulation prevention byte) from the encoded stream, and outputs the encoded stream from which the EPB has been removed to the slice data processing units 134a and 134b. Furthermore, the EPB removing unit 132a obtains information on layers above the slice, such as SPS (sequence parameter set) and PPS (picture parameter set) included in the encoded stream, and the information is added to each of the four divided streams. The information is output to the EPB insertion unit 132b so as to be inserted.
  • SPS sequence parameter set
  • PPS picture parameter set
  • the EPB insertion unit 132 b inserts the EPB removed by the EPB removal unit 132 a into a divided stream generated by dividing the encoded stream.
  • the slice header insertion unit 133 executes the above-described slice header insertion process and MB address information update process.
  • the slice header insertion unit 133 sends a slice header processing content notification M1 indicating whether or not to insert the slice header at a predetermined timing to the slice data processing units 134a and 134b, and the slice data processing units 134a and 134b.
  • the slice header insertion processing is executed.
  • the slice header insertion unit 133 outputs the slice header immediately before the MB line and the duplicate slice header in which the MB address information is updated to the EPB insertion unit 132 b by the slice header insertion processing.
  • the slice data processing units 134a and 134b generate four divided streams by dividing the coded stream from which the EPB has been removed, and output the four divided streams.
  • the divided stream output from the slice data processing units 134a and 134b does not include the slice header and the duplicate slice header immediately before or within the MB line.
  • the slice data processing unit 134a executes processing according to Context-Adaptive Variable Length Decoding (CAVLD), and divides the encoded stream generated by Context-Adaptive Variable Length Coding (CAVLC) into four divided streams.
  • CAVLD Context-Adaptive Variable Length Decoding
  • CAVLC Context-Adaptive Variable Length Coding
  • the slice data processing unit 134b executes processing according to CABAD (Context-Adaptive Binary Arithmetic Decoding), and divides the encoded stream generated by CABAC (Context-Adaptive Binary Arithmetic Coding) into four divided streams. .
  • CABAD Context-Adaptive Binary Arithmetic Decoding
  • CABAC Context-Adaptive Binary Arithmetic Coding
  • the slice data processing unit 134a includes a slice data layer decoding unit 135a, a macroblock layer decoding unit 136a, a skip run correction unit 137a, a QP delta correction unit 138a, and a division point detection unit 139a.
  • the slice data layer decoding unit 135a performs variable length decoding on the encoded data of the slice data layer included in the encoded stream.
  • the macroblock layer decoding unit 136a performs variable length decoding on encoded data of the macroblock layer included in the encoded stream. Such variable length decoding by the slice data layer decoding unit 135a and the macroblock layer decoding unit 136a removes the dependency between adjacent macroblocks. Note that the slice data layer decoding unit 135a and the macroblock layer decoding unit 136a need only information (specifically, n-C (non-zero coefficient) of CAVLC, etc.) that depends on the macroblock adjacent to the macroblock to be processed. It may be decrypted.
  • the skip run correction unit 137a corrects the MB skip run information "mb_skip_run" decoded by the slice data layer decoding unit 135a, re-encodes the corrected MB skip run information, and decodes the encoded MB skip run information. Output. That is, when the MB skip run information indicates the number of consecutive blocks across at least two consecutive slice portions in the encoded stream, the skip run correction unit 137a divides the number of consecutive blocks, and the slice portion The MB skip run information modified to indicate the number of blocks in each block is set in the split stream to which at least two consecutive slice portions are respectively allocated.
  • the skip run correction unit 137a determines the plurality of MB skip run information as the plurality of blocks. It is converted into one MB skip run information indicating the sum of the numbers indicated by each of the MB skip run information.
  • the MB skip run information is an example of a first code word indicating the number of consecutive blocks of a specific type in the slice included in the encoded picture. Specifically, the MB skip run information indicates the number of macro blocks skipped in succession.
  • the MB skip run information decoded by the slice data layer decoding unit 135a is It indicates the number of consecutively skipped macroblocks included in the set.
  • the number of continuously skipped macroblocks changes in each divided stream. That is, the dependency between MB lines is broken by the MB skip run information.
  • the skip run correction unit 137a specifies, for each MB line including a part of the above-mentioned set, the number of continuously skipped macroblocks constituting the above-mentioned part included in the MB line. Then, for each MB line, the skip run correction unit 137a corrects the MB skip run information so that the number indicated by the MB skip run information becomes the number specified for that MB line.
  • the QP delta correction unit 138a corrects, for each macroblock, the QP variation "mb_qp_delta" of the macroblock decoded by the macroblock layer decoding unit 136a, and encodes the modified QP variation again, Output the quantized QP variation. That is, when the QP variation indicates the variation between blocks across two MB lines, the QP delta modification unit 138a determines the variation of the coding coefficient based on the new context of blocks in each divided stream. calculate. Then, the QP delta correction unit 138a corrects the QP variation to the calculated variation.
  • the QP change amount is an example of a second code word indicating the change amount of the coding coefficient between successive blocks in the slice included in the coded picture.
  • the QP variation is included in the macroblock (target macroblock), and the difference value between the QP value of the target macroblock and the QP value of the macroblock located immediately before the target macroblock.
  • the decoding engine 120 that targets a divided stream including one of the macroblocks (target macroblocks) continuous to each other as the target of decoding is the QP value of the target macroblock based on the QP variation of the target macroblock. Can not be derived. That is, the dependency between MB lines is broken due to the QP variation.
  • the QP delta correction unit 138a recalculates, for each macroblock, the QP variation of the macroblock (target macroblock) based on the context of the new macroblock in the divided stream.
  • the division point detection unit 139a divides the encoded stream into four divided streams. That is, the division point detection unit 139a divides the picture into a plurality of MB lines, and assigns each of the MB lines to any of the four divided streams. If there is a slice header between the two macroblocks immediately before or between the MB line, the division point detection unit 139a divides the MB line into a division stream without assigning the slice header. assign. Also, the division point detection unit 139a includes, in each of the division streams, the MB skip run information acquired from the skip run correction unit 137a and the QP variation acquired from the QP delta correction unit 138a.
  • the division point detection unit 139a detects the end of the slice of the divided stream and receives the slice header processing content notification M1 from the slice header insertion unit 133, the division point detection unit 139a responds to the content indicated by the slice header processing content notification M1. Execute slice end processing of. Further, when the slice end processing is completed, the division point detection unit 139a sends a termination processing completion notification M2 to the slice header insertion unit 133.
  • the slice data processing unit 134 b includes a slice data layer decoding unit 135 b, a macroblock layer decoding unit 136 b, a QP delta correction unit 138 b, and a division point detection unit 139 b.
  • the slice data layer decoding unit 135 b performs variable-length decoding (arithmetic decoding) on encoded data of the slice data layer included in the encoded stream.
  • the macroblock layer decoding unit 136 b performs variable-length decoding (arithmetic decoding) on encoded data of the macroblock layer included in the encoded stream. Such variable length decoding by the slice data layer decoding unit 135b and the macroblock layer decoding unit 136b removes the dependency between adjacent macroblocks.
  • the QP delta correction unit 138 b corrects, for each macroblock, the QP variation “mb_qp_delta” of the macroblock decoded by the macroblock layer decoding unit 136 b as in the above-described QP delta correction unit 138 a.
  • the QP variation is again encoded, and the encoded QP variation is output.
  • the division point detection unit 139b divides the encoded stream into four division streams.
  • the division point detection unit 139 b includes, in each of the division streams, the QP variation obtained from the QP delta correction unit 138 b.
  • the division point detection unit 139b detects the end of the slice of the division stream and receives the slice header processing content notification M1 from the slice header insertion unit 133, according to the content indicated by the slice header processing content notification M1 Execute the above-mentioned slice termination process.
  • the division point detection unit 139 b sends an end processing completion notification M2 to the slice header insertion unit 133.
  • slice header insertion unit 133 and the slice data processing units 134a and 134b will be described in detail.
  • slice data processing unit 134 When describing the common functions and processing operations of the slice data processing units 134a and 134b, they will be generically referred to as slice data processing unit 134 without distinction.
  • FIG. 8 is an explanatory diagram for explaining the operations of the slice header insertion unit 133 and the slice data processing unit 134.
  • the slice data processing unit 134 divides the picture including slice A and slice B into MB lines, and the MB lines are sequentially included in the divided stream buffer 152 from the MB line on the top side through the EPB insertion unit 132 b. It is stored in four areas (first area df1 to fourth area df4). At this time, the slice data processing unit 134 repeatedly stores the MB line storage destination in the order of the first area df1, the second area df2, the third area df3, the fourth area df4, and the first area df1 for each 1 MB line storage. change.
  • the slice data processing unit 134 stores the MB line La1 of slice A in the first area df1 of the divided stream buffer 152, and the MB line La2 next to slice A. , And stores the MB line La3 next to slice A in the third area df3 of the divided stream buffer 152. Further, the slice data processing unit 134 stores the MB line Lb1 of the slice B next to the slice A in the fourth area df4 of the divided stream buffer 152.
  • MB lines are stored in each of the four first to fourth areas df1 to df4 of the divided stream buffer 152, and the next MB line of slice B is stored again in the first area df1 in the divided stream buffer 152.
  • the slice data processing unit 134 When storing the MB line La3 in the third area df3, the slice data processing unit 134 stores the slice end information ea even if there is slice end information ea immediately after the MB line La3 in the encoded stream. Instead, only the MB line La3 is stored in the third area df3. Then, when the MB data belonging to the new slice is stored in the third area df3 after that, the slice data processing unit 134 outputs the slice end information ea 'corresponding to the slice end information ea in the third area df3.
  • the slice header insertion unit 133 Store in When the slice data processing unit 134 stores the MB line Lb1 in the fourth area df4, the slice header insertion unit 133 stores the slice header hb of slice B in the fourth area df4 in advance.
  • the division point detection units 139a and 139b of the slice data processing unit 134 determine whether or not all macroblocks of 1 MB line have been output each time a macroblock is output. As a result, when it is determined that all the macroblocks have been output, the division point detection units 139a and 139b detect the MB line boundary (end of the MB line). Then, each time the division point detection units 139a and 139b detect the boundary of the MB line, the division point detection units 139a and 139b interrupt the output processing of the macroblock and notify the slice header insertion unit 133 that the boundary of the MB line is detected.
  • the slice header insertion unit 133 receive notification that the boundary of the MB line is detected.
  • the slice header insertion unit 133 that has received the MB line boundary detection notification sends a slice header processing content notification M1 to the slice data processing unit 134 as shown in (b) of FIG. 8. Whether the slice header processing content notification M1 is intended to output the slice header to the divided stream buffer 152 and store it immediately before the next MB line is stored from the slice data processing unit 134 to the divided stream buffer 152. Is information to notify the slice data processing unit 134 of that and indicates “output” or “non-output”. That is, the slice header processing content notification M1 indicating “output” is a notification for prompting the slice data processing unit 134 to perform the slice end processing.
  • the slice header insertion unit 133 outputs the copied slice header hb ′ to the divided stream buffer 152 and stores it immediately before the next MB line Lb2 is stored from the slice data processing unit 134 to the divided stream buffer 152. to decide. At this time, the slice header insertion unit 133 outputs a slice header processing content notification M1 indicating “output” to the slice data processing unit 134.
  • the slice data processing unit 134 acquires the slice header processing content notification M1 if the slice header processing content notification M1 indicates “output”, the slice data processing unit 134 generates slice termination information and stores it in the divided stream buffer 152, The termination processing completion notification M2 is output to the slice header insertion unit 133. On the other hand, if the slice header processing content notification M1 indicates “not output”, the slice data processing unit 134 does not store the slice end information in the divided stream buffer 152, and transmits the termination processing completion notification M2 to the slice header insertion unit. Output to 133.
  • the slice data processing unit 134 when acquiring the slice header processing content notification M1 indicating “output”, the slice data processing unit 134 generates slice end information ea ′ as shown in (c) of FIG. 1) Store in area df1. When the storage is completed, the slice data processing unit 134 outputs the termination processing completion notification M2 to the slice header insertion unit 133.
  • the slice header insertion unit 133 acquires the termination processing completion notification M2 from the slice data processing unit 134, if the slice header processing content notification M1 output immediately before indicates “output”, the slice header insertion unit 133 via the EPB insertion unit 132b. The slice header is output to and stored in the split stream buffer 152, and then the slice header processing completion notification M3 is output to the slice data processing unit 134. On the other hand, when the slice header processing content notification M1 output immediately before indicates “non-output”, the slice header insertion unit 133 notifies the slice header processing completion without storing the slice header in the divided stream buffer 152. M3 is output to the slice data processing unit 134.
  • the slice header insertion unit 133 acquires the termination processing completion notification M2 from the slice data processing unit 134 when the slice header processing content notification M1 output immediately before indicates “output”, (d in FIG. As shown in), the duplicate slice header hb ′ is generated and stored in the first area df1 of the divided stream buffer 152. Thereafter, the slice header insertion unit 133 outputs the slice header processing completion notification M3 to the slice data processing unit 134.
  • the division point detection units 139a and 139b of the slice data processing unit 134 resume output processing of the interrupted macro block, and output the next MB line. Then, the divided stream buffer 152 stores it.
  • the slice data processing unit 134 outputs the next MB line Lb2 and stores the next MB line Lb2 in the first area df1 of the divided stream buffer 152.
  • the slice header insertion unit 133 and the slice data processing unit 134 By the processing by the slice header insertion unit 133 and the slice data processing unit 134, in each area of the divided stream buffer 152, the slice end information, the slice header, and the next MB line are ordered in the order of these data as MB lines. You can write to the boundary.
  • FIG. 9 is a block diagram showing the configuration of the slice header insertion unit 133. As shown in FIG.
  • the division point detection unit 139 When describing the functions and processing operations common to the division point detection units 139a and 139b with reference to FIG. 9, the division point detection unit 139 is generically referred to without distinction.
  • the slice header insertion unit 133 includes an NAL type determination unit 133a, a header insertion counter 133b, a header address update unit 133c, and a header buffer 133d.
  • the NAL type determination unit 133a determines whether the type of the NAL unit is a slice. When the NAL type determination unit 133a determines that the type is a slice, the NAL type determination unit 133a notifies the header buffer 133d and the header insertion counter 133b that the type of the NAL unit is a slice.
  • the header buffer 133d When receiving the notification from the NAL type determination unit 133a, the header buffer 133d extracts and stores the slice header from the NAL unit if the NAL unit corresponding to the notification includes the slice header. Furthermore, if the subsequent NAL unit includes a new slice header, the header buffer 133d replaces the slice header already stored with the new slice header. That is, the header buffer 133d always holds the latest slice header.
  • the header insertion counter 133b counts the number of boundaries (ends) of MB lines in the encoded stream detected by the division point detection unit 139 in order to specify the timing of generating and inserting a duplicate slice header. Specifically, the header insertion counter 133b counts values from 0 to 4 (total number of decoding engines 120). When receiving the notification from the NAL type determination unit 133a, the header insertion counter 133b resets the count value to 0 if the slice header is included in the NAL unit corresponding to the notification. Furthermore, when the MB line boundary (end of MB line) is detected, the header insertion counter 133 b counts up the count value by one. When the MB line boundary is further detected after the count value reaches 4, the header insertion counter 133b maintains the count value at 4 without counting up.
  • the header insertion counter 133b updates or holds the count value when the MB line boundary is detected, and resets the count value to 0 if the slice header is included in the NAL unit.
  • a slice header processing content notification M1 indicating “output” or “not output” is output to the division point detection unit 139. Specifically, when the count value immediately after the MB line boundary is detected is 0 to 3, the header insertion counter 133 b outputs a slice header processing content notification M1 indicating “output”, and the count value is 4 In the case of, the slice header processing content notification M1 indicating “not output” is output. Further, the header insertion counter 133 b outputs the slice header processing content notification M 1 indicating “output” not only when the boundary of the MB line is detected but also when the count value becomes 0.
  • the header insertion counter 133 b outputs the slice header processing content notification M 1 to the division point detection unit 139
  • the output slice header processing content notification M 1 Indicates “output”
  • the slice header stored in the header buffer 133 d is output from the header buffer 133 d.
  • the header insertion counter 133 b outputs the slice header processing completion notification M 3 to the division point detection unit 139.
  • the slice header insertion unit 133 stores the area as a storage destination of the divided stream buffer 152 according to the value indicated by the MB address information included in the slice header.
  • the slice header insertion unit 133 stores the slice header in the area to be the selected storage destination.
  • the header insertion counter 133b does not output the slice header stored in the header buffer 133d from the header buffer 133d. , Keep in the stored state. Thereafter, as described above, the header insertion counter 133 b outputs the slice header processing completion notification M 3 to the division point detection unit 139.
  • FIG. 10 is a diagram showing MB lines and slice headers allocated to the first area df1 to the fourth area df4 of the divided stream buffer 152. As shown in FIG.
  • the stream division unit 130 reads the slices A to C of the coded stream stored in the stream buffer 151 in the order of slice A, slice B, and slice C.
  • the header buffer 133 d of the slice header insertion unit 133 extracts and stores the slice header ha from the beginning of the slice A.
  • the header insertion counter 133b resets the count value to zero. Therefore, since the count value is 0, the header buffer 133 d stores the slice header ha in the first area df 1 of the divided stream buffer 152 by outputting the stored slice header ha.
  • the slice data processing unit 134 divides the first MB line by outputting the first MB line following the slice header ha of slice A in the encoded stream. It is stored in the first area df1 of 152. As a result, those data are stored in the first area df1 in the order of the slice header ha and the first MB line belonging to the slice A.
  • the above-mentioned header insertion counter 133b counts up the count value to one. Therefore, since the header buffer 133d outputs the stored slice header ha as the copied slice header ha 'because the count value is 1 at the end of the first MB line, the copied slice header ha' is divided stream buffer It is stored in the second area df2 of 152.
  • the MB address information of the duplicate slice header ha ' is updated by the header address update unit 133c.
  • the slice data processing unit 134 When the duplicate slice header ha ′ is output from the header buffer 133 d, the slice data processing unit 134 outputs the second MB line following the first MB line in the encoded stream, thereby dividing the second MB line into the divided stream buffer 152. Is stored in the second area df2.
  • the second MB line includes a plurality of macroblocks belonging to slice A, a slice header hb of slice B, and a plurality of macroblocks belonging to slice B. Therefore, the division point detection unit 139 of the slice data processing unit 134 first stores all macroblocks belonging to slice A included in the second MB line in the second area df2. When the storage is completed, the division point detection unit 139 temporarily suspends the output processing of the macro block, and stands by until the slice header processing content notification M1 is received from the slice header insertion unit 133.
  • the slice header insertion unit 133 resets the count value to 0, and sends a slice header processing content notification M1 indicating “output” to the division point detection unit 139.
  • the division point detection unit 139 that has received this slice header processing content notification M1 performs slice termination processing on the end of the slice A of the second area df2, and sends a termination processing completion notification M2 to the slice header insertion unit 133.
  • the slice header insertion unit 133 that has received the termination processing completion notification M2 stores the slice header hb of slice B in the second area df2, and sends the slice header processing completion notification M3 to the division point detection unit 139.
  • the division point detection unit 139 having received this slice header processing completion notification M3 resumes the interrupted output processing, and stores a plurality of macro blocks belonging to the next slice B included in the second MB line in the second area df2. Do.
  • the header buffer 133d of the slice header insertion unit 133 extracts and stores the slice header hc from the beginning of the slice C following the second MB line in the encoded stream. .
  • the header insertion counter 133b resets the count value to zero. Therefore, since the count value is 0 at the end of the second MB line, the header buffer 133d stores the slice header hc in the third area df3 of the divided stream buffer 152 by outputting the stored slice header hc. Do.
  • the slice data processing unit 134 divides the third MB line by outputting the third MB line following the slice header hc of slice C in the encoded stream. It is stored in the third area df3 of 152. As a result, those data are stored in the third area df3 in the order of the slice header hc and the third MB line belonging to the slice C.
  • the header insertion counter 133b described above counts up the count value to one. Therefore, since the header buffer 133d outputs the stored slice header hc as the copied slice header hc 'because the count value is 1 at the end of the third MB line, the copied slice header hc' is divided stream buffer It is stored in the fourth area df4 of 152.
  • the MB address information of the duplicate slice header hc ' is updated by the header address updating unit 133c.
  • data is sequentially stored in the first area df1 to the fourth area df4 of the divided stream buffer 152.
  • the first divided stream to the fourth divided stream are stored in each of the first area df1 to the fourth area df4.
  • 11A and 11B show positions where slice end information is set.
  • the picture includes slice A and slice B, and the top macroblock of slice B following slice A is at the left end of the MB line.
  • the division point detection unit 139 of the slice data processing unit 134 is located 4 MB lines before the top MB line of the slice B immediately before the slice header hb of the slice B is output from the slice header insertion unit 133.
  • the slice end information ea ′ of slice A is set at the end of the MB line of slice A.
  • the division point detection unit 139 of the slice data processing unit 134 is located 3 MB before the top MB line of the slice B immediately before the copied slice header hb ′ of the slice B is output from the slice header insertion unit 133.
  • slice end information ea ′ of slice A is set.
  • the slice end information ea ' is set at the end of each MB line 1 to 4 MB before the MB line.
  • the picture includes slice A and slice B, and the top macroblock of slice B following slice A is other than the left end of the MB line.
  • the division point detection unit 139 of the slice data processing unit 134 generates an MB line including the slice header hb of the slice B immediately before the copied slice header hb 'of the slice B is output from the slice header insertion unit 133.
  • the slice end information ea ′ of slice A is set at the end of the MB line of slice A, which is 3 MB lines before.
  • FIG. 12 is a flowchart showing the operation of the division point detection unit 139.
  • the division point detection unit 139 specifies and outputs data (for example, a macro block) to be processed from the top side of the encoded stream, and stores the data in the division stream buffer 152 (step S100).
  • the division point detection unit 139 manages the address (MB address value) of the macro block to be output. That is, if the output macroblock is the first macroblock of a slice included in the encoded stream, the division point detection unit 139 includes the MB address value of the output macroblock in the slice header of the slice. Update to the value indicated by the MB address information. Then, the division point detection unit 139 increments the MB address value every time the macroblock following the leading macroblock is output.
  • the MB address value is an integer of 0 or more.
  • step S114 When the division point detection unit 139 determines that the end has not been reached (No in step S102), whether or not there is data to be processed next in the encoded stream, that is, whether or not output processing should be ended It discriminates (step S114). On the other hand, when the division point detection unit 139 determines that the end (the boundary of the MB line) is reached, that is, when the boundary of the MB line is detected (Yes in step S102), it is detected that the boundary of the MB line is detected. While notifying the unit 133 and interrupting the output processing, it is then determined whether or not the slice header processing content notification M1 has been received from the slice header insertion unit 133 (step S104).
  • the division point detection unit 139 determines that the slice header processing content notification M1 has not been received (No in step S104).
  • the division point detection unit 139 waits until the slice header processing content notification M1 is received.
  • the division point detection unit 139 determines whether the slice header processing content notification M1 indicates "output" (step S106). ).
  • step S108 slice end processing is performed (step S108). That is, when the encoded stream is decoded by CABAD, the division point detection unit 139 sets “1” to “end_of_slice_flag” as slice end information. Also, when the encoded stream is decoded by CAVLD, the dividing point detection unit 139 adds “rbsp_slice_trailing_bits” as slice end information.
  • the slice header insertion unit 133 completes the end process.
  • a notification M2 is sent (step S110).
  • the division point detection unit 139 determines whether the slice header processing completion notification M3 has been received from the slice header insertion unit 133 (step S112).
  • the division point detection unit 139 stands by until the slice header processing completion notification M3 is received.
  • step S112 determines in step S112 that the slice header processing completion notification M3 has been received (Yes in step S112), whether or not there is data to be processed next in the encoded stream, that is, It is determined whether the output process should be ended (step S114).
  • step S114 when the division point detection unit 139 determines that the process should be ended (Yes in step S114), the process is ended, and when it is determined that the process should not be ended (No in step S114), the next processing target is performed again.
  • the data to be output is output and stored in the divided stream buffer 152 (step S100).
  • the skip run correction unit 137a corrects "mb_skip_run" which is the MB skip run information.
  • the MB skip run information is a code word included in the encoded stream when CAVLC is used as the encoding method, and indicates the number of consecutive skip macroblocks (hereinafter, also referred to as “length”). Further, in the following description, the length of the MB skip run information means the number of consecutive skip macroblocks indicated by the MB skip run information.
  • FIG. 13A and FIG. 13B are explanatory diagrams for explaining the correction process of MB skip run information.
  • MB skip run information of length 6 (2 + 4 6) indicating the number of consecutive skipped macroblocks across L5 to L6 is encoded.
  • the number of consecutively skipped macroblocks changes in each divided stream. . That is, the dependency between the plurality of MB lines is broken according to the MB skip run information indicating the number of consecutive skipped macroblocks across the plurality of MB lines.
  • the MB lines included in the first divided stream are L1 and L5, and there are two consecutive skipped macroblocks at the end of the MB line L5.
  • the MB lines included in the second divided stream are L2 and L6, and there are nine consecutive skipped macroblocks across L2 to L6.
  • the MB lines included in the third divided stream are L3 and L7, and the MB line has three consecutive skipped macroblocks at the head of L3.
  • the MB lines included in the fourth divided stream are L4 and L8, and there are no skipped macroblocks.
  • the MB skip run information originally included in the encoded stream had lengths 8 and 6, while the MB skip run information having a length 2 for the first divided stream, It is necessary to output MB skip run information of length 9 for a bisectioned stream and MB skip run information of length 3 for a third split stream.
  • the dependency is the MB line in each divided stream. It is necessary to correct the MB skip run information so as to become a new dependency according to the context of.
  • the skip run correction unit 137a skips MB on MB line boundaries.
  • Split run information to divide the MB skip run information at the MB line boundary means to divide the number of consecutive skip macro blocks across a plurality of MB lines and to indicate the number of skip macro blocks for each MB line. Means to generate MB skip run information.
  • the skip run correction unit 137a converts the MB skip run information corresponding to the set of eight skip macroblocks existing across the MB lines L2 to L3 into the MB line L2. It is divided into MB skip run information corresponding to a set of five skip macroblocks included and MB skip run information corresponding to a set of three skip macroblocks included in the MB line L3. Similarly, the skip run correction unit 137a sets MB skip run information corresponding to a set of six skip macroblocks existing across the MB lines L5 to L6 to two skip macroblocks included in the MB line L5. It is divided into MB skip run information corresponding to the set and MB skip run information corresponding to a set of four skip macroblocks included in the MB line L6.
  • the skip run correction unit 137a recombines a plurality of MB skip run information corresponding to a set of consecutive skip macroblocks in each divided stream among the divided MB skip run information.
  • rejoining of a plurality of MB skip run information means converting the plurality of MB skip run information into one MB skip run information indicating the sum of the numbers indicated by each of the plurality of MB skip run information.
  • the skip run correction unit 137a combines two pieces of MB skip run information respectively corresponding to a set of these two skip macroblocks, and converts them into MB skip run information of length 9.
  • the skip run correction unit 137a re-encodes the MB skip run information thus obtained, and outputs the encoded MB skip run information.
  • the skip run correction unit 137a divides the input MB skip run information at the MB line boundary, and then rejoins as needed to obtain an appropriate length for each divided stream. MB skip run information can be output.
  • the skip run correction unit 137 a recombines as needed without leaving the MB skip run information divided in each divided stream as it is. This is because, in the H.264 / AVC standard, it is not permitted that a plurality of MB skip run information be continuously present. That is, H. In the H.264 / AVC standard, since it is not permitted to represent the number of consecutive skip macroblocks using a plurality of MB skip run information, the skip run correction unit 137a combines the plurality of MB skip run information. . As described above, the skip run correction unit 137a makes the H. The H.264 split stream is corrected by correcting MB skip run information in a format compliant with the H.264 / AVC standard. It is generated in a format compliant with the H.264 / AVC standard. As a result, the subsequent decoding engine 120 can decode the divided stream without requiring special processing.
  • MB skip run information of length 5 is encoded in the MB line L2
  • MB skip run information of length 3 is encoded in the MB line L6.
  • the skip run modification unit 137a divides MB skip run information at MB line boundaries. There is no need. However, if this picture is divided into MB lines and the MB lines are allocated to different divided streams, MB skip run information of length 5 and MB skip run information of length 3 in the second divided stream And will exist continuously.
  • the skip run correction unit 137a continues skipping one continuous skip in each divided stream. A process of rejoining a plurality of MB skip run information indicating the number of macro blocks is performed. That is, the skip run correction unit 137a combines the MB skip run information of length 5 and the MB skip run information of length 3 in the second divided stream, and converts the combined information into MB skip run information of length 8.
  • the skip run correction unit 137 a encodes again the MB skip run information obtained in this way, and outputs the encoded MB skip run information.
  • FIG. 14 is a block diagram showing the configuration of the skip run correction unit 137a.
  • the skip run correction unit 137 a includes a skip run extraction unit 160, a skip run division unit 161, a skip run accumulation / holding unit 162, an addition unit 163, and a skip run encoding unit 164.
  • the skip run extraction unit 160 detects and extracts MB skip run information from the stream output from the slice data layer decoding unit.
  • the extracted MB skip run information is output to the skip run division unit 161, and the other information is output as it is to the division point detection unit 139a.
  • the skip run division unit 161 counts the number of skip macroblocks in which the input MB skip run information continues across a plurality of MB lines based on the length of MB skip run information and the position information of the macro block in which the MB skip run information exists. Determine whether to indicate.
  • the skip run division unit 161 divides MB skip run information with the MB line boundary as a division point.
  • the MB skip run information indicating the number of skipped macroblocks crossing the MB line boundary is output to the adding unit 163, and the MB indicates the number of skipped macroblocks not crossing the MB line boundary.
  • the skip run information is output to the skip run accumulation / holding unit 162.
  • the MB skip run information may indicate the number of consecutive skipped macro blocks across three or more MB lines. In that case, two or more MB line boundaries exist between consecutive skip macro blocks, and thus the skip run division unit 161 performs division repeatedly using each MB line boundary as a division point. At that time, among the divided MB skip run information, MB skip run information indicating the number of skip macroblocks that have crossed the last MB line boundary is output to the adding unit 163, and the other MB skip run information is a skip run. It is output to the accumulation / holding unit 162.
  • the skip run accumulation / holding unit 162 receives the divided MB skip run information output from the skip run division unit 161, and holds the value for each divided stream as leading MB skip run information. That is, the skip run accumulation / holding unit 162 holds MB skip run information included in the first divided stream as preceding MB skip run information of the first divided stream. Also, when receiving the MB skip run information included in the second divided stream, the skip run accumulation / holding unit 162 holds it as leading MB skip run information of the second divided stream. In addition, when the MB skip run information included in the third divided stream is received, the skip run accumulation / holding unit 162 holds it as leading MB skip run information of the third divided stream. Also, when the MB skip run information included in the fourth divided stream is received, the skip run accumulation / holding unit 162 holds it as leading MB skip run information of the fourth divided stream.
  • the skip run accumulation / hold unit 162 accumulates the MB skip run information received from the skip run division unit 161 and newly As the MB skip run information, the value is held for each divided stream. That is, the skip run accumulation / holding unit 162 adds the MB skip run information received from the skip run division unit 161 to the preceding MB skip run information held for each divided stream.
  • the adding unit 163 receives MB skip run information from the skip run dividing unit 161, and adds the preceding MB skip run information held in the skip run accumulation / holding unit 162 corresponding to the divided stream including the MB skip run information. read out. Then, the addition unit 163 adds the value of the MB skip run information received from the skip run division unit 161 and the value of the preceding MB skip run information read from the skip run accumulation / holding unit 162, and corrects the result. It is output to the skip run encoding unit 164 as the MB skip run information. This process rejoins MB skip run information.
  • the skip run coding unit 164 re-embeds the corrected MB skip run information output from the addition unit 163 and outputs the corrected MB skip run information to the stream by outputting the code to the division point detection unit 139a. .
  • FIG. 15 is a flowchart showing the correction operation of the MB skip run information by the skip run correction unit 137a.
  • the skip run correction unit 137a determines whether the stream being processed has reached the end of the slice (step S200). This is because the MB skip run information does not indicate the number of consecutive skip macroblocks across slice boundaries, so when reaching the slice end, the preceding MB skip held inside the skip run correction unit 137a This is because all the run information needs to be output. If it is determined that the slice end has been reached (Yes in step S200), the process proceeds to step S224. Details of the process will be described later.
  • the skip run correction unit 137a checks whether the MB skip run information “mb_skip_run” has been acquired (step S202). Here, when the MB skip run information has not been acquired yet (No in step S202), the skip run correction unit 137a returns to the beginning of the process and reads the stream again.
  • the skip run correction unit 137a determines the position of the macro block in the picture from the address information of the macro block including the corresponding MB skip run information. It calculates (step S204).
  • the skip run correction unit 137a specifies the position of the leading skip macroblock among the consecutive skip macroblocks indicated by the acquired MB skip run information.
  • the skip run correction unit 137a checks whether or not successive skip macroblocks reach the MB line boundary from the position information of the macroblock and the length of the MB skip run information. Thus, it is determined whether it is necessary to divide the acquired MB skip run information (step S206).
  • the skip run correction unit 137a determines that consecutive skip macroblocks reach the MB line boundary.
  • the skip run correction unit 137a similarly performs macroblock position information and MB skip From the length of the run information, it may be determined whether consecutive skipped macroblocks reach the division boundary.
  • step S206 If it is determined that consecutive skip macroblocks reach the MB line boundary (Yes in step S206), the skip run correction unit 137a proceeds to step S216 to divide MB skip run information. Details will be described later.
  • the skip run correction unit 137a determines whether the corresponding MB skip run information is located at the beginning of the MB line. (Step S208). That is, the skip run correction unit 137a determines whether or not it is necessary to combine the corresponding MB skip run information with the preceding MB skip run information.
  • the skip run correction unit 137a When it is determined that the corresponding MB skip run information is positioned at the beginning of the MB line (Yes in step S208), the skip run correction unit 137a performs preceding MB skip run information on the MB skip run information "mb_skip_run".
  • the MB skip run information is recombined by adding “prev_mb_skip_run” (step S210).
  • This MB skip run information rejoining process needs to be performed independently for each divided stream. That is, the preceding MB skip run information is held in the skip run correction unit 137a for each divided stream, and the preceding MB skip run information corresponding to the MB line including the corresponding MB skip run information is added.
  • step S208 If it is determined in step S208 that the corresponding MB skip run information is not located at the beginning of the MB line (No in step S208), or after combining MB skip run information in step S210, the skip run correction is performed.
  • the unit 137a re-encodes MB skip run information (step S212). This is divided stream H. This is to make the format compliant with the H.264 / AVC standard.
  • the skip run correction unit 137a outputs the re-coded MB skip run information to the division point detection unit 139a and ends the process (step S214).
  • step S206 If it is determined in step S206 that successive skip macroblocks reach the MB line boundary (Yes in step S206), the skip run correction unit 137a sets the MB line boundary as a division point and the corresponding MB skip run information. The first half and the second half are divided (step S216). In the case where consecutive skip macroblocks reach the MB line boundary but do not straddle the MB line boundary, the second half may be zero.
  • the skip run correction unit 137a internally holds the former half of the divided MB skip run information as preceding MB skip run information “prev_mb_skip_run”.
  • the skip run correction unit 137a is a preceding MB for which the length of the first half of the newly generated MB skip run information is held. It is added to the length of the skip run information and held (step S218).
  • the leading MB skip run information is held independently for each divided stream as leading MB skip run information of a divided stream corresponding to the MB line in which it is included.
  • the skip run correction unit 137a sets the latter half of the divided MB skip run information as new MB skip run information (step S220), and then determines whether the length is 0 (step S220). S222).
  • step S222 If it is determined in step S222 that the length of the new MB skip run information is 0 (Yes in step S222), the skip run correction unit 137a performs processing assuming that there is no more MB skip run information to be processed. Finish.
  • step S222 If it is determined in step S222 that the length of the new MB skip run information is not 0 (Yes in step S222), the skip run correction unit 137a determines that there is still MB skip run information to be processed in step S204. Return and perform MB skip run information division / recombination and output processing again. As described above, the skip run correction unit 137a repeatedly performs division / recombination of MB skip run information, so that division / recombination processing is correctly performed also for MB skip run information extending over 3 MB lines.
  • step S200 if it is determined in step S200 that the slice is at the end of the slice (Yes in step S200), the preceding MB skip run information "prev_mb_skip_run” is output in order to output the preceding MB skip run information held in the skip run correction unit 137a. It is replaced with the MB skip run information "mb_skip_run” as it is (step S224). Thereafter, the process proceeds to step S212, the skip run correction unit 137a re-encodes the replaced MB skip run information, and then outputs it to the division point detection unit 139a to end the process (steps S212 to S214). The output of the preceding MB skip run information is performed on all the split streams.
  • the above-described processing is repeatedly performed by the skip run correction unit 137a until the end of the stream.
  • the skip run correction unit 137a division / recombination of MB skip run information is appropriately performed.
  • the QP delta correction units 138a and 138b will be described in detail.
  • the QP delta correction unit 138 when describing the functions and processing operations common to the QP delta correction units 138a and 138b, they are collectively referred to as the QP delta correction unit 138 without distinction.
  • the QP delta correction unit 138 corrects the QP variation "mb_qp_delta" that exists in principle for each macroblock.
  • the QP variation is a code word included in the coded stream to decode the QP value that is the quantization parameter of the macroblock, and is the difference value between the QP value of the target macroblock and the macroblock value processed immediately before that macroblock. Is shown.
  • Decoding of the QP value is performed by the following equation (1).
  • QP Y ((QP Y, PREV + mb_qp_delta + 52 + 2 * QpBdOffset Y )% (52 + QpBdOffset Y ))-QpBdOffset Y (1)
  • QP Y indicates the QP value of the luminance of the processing target macroblock
  • QP Y, PREV indicates the QP value of the luminance of the immediately preceding macroblock.
  • the QP value is decoded using the QP variation "mb_qp_delta" to be in the range of 0 to 51.
  • mb_qp_delta is a value that can be in the range of ⁇ 26 to +25.
  • Decoding of the QP value which is a quantization parameter, has a dependency between successive macroblocks in the processing order, but if there is a slice boundary in the middle, the dependency is canceled there. That is, the quantization parameter QP value is initialized by the slice QP value at the beginning of the slice. In the first macroblock of the slice, the difference value between the QP value of the corresponding macroblock and the slice QP value is encoded as a QP variation.
  • 16A and 16B are explanatory diagrams for explaining the correction process of the QP variation.
  • the macro block B to be processed originally is the macro block B. Therefore, in the macroblock C, the difference value between the QP value of the macroblock B and the QP value of the macroblock C is encoded as the QP variation.
  • the macroblock located immediately before the macroblock C becomes the macroblock A. Therefore, when the second divided stream is decoded as it is, the QP variation, which is the difference between the QP value of macroblock B and the QP value of macroblock C, is reflected on the QP value of macroblock A. As a result, the QP value of the macroblock C can not be decoded correctly. That is, the dependency between the MB lines is broken due to the QP variation indicating the variation between macro blocks across two MB lines.
  • the QP delta correction unit 138 corrects the QP variation so as to correct the change in the context of the macroblocks generated by dividing the stream. That is, when the two MB lines have a dependency by the QP variation indicating the variation between macroblocks across two MB lines, the dependency is the context of the MB lines in each divided stream. The QP variation is corrected so as to obtain a new dependency depending on the situation.
  • the QP variation is calculated based on the context of the new macroblock after stream division. There is a way to do it again.
  • this method requires two processes of QP value decoding and QP variation calculation, and the processing amount in the QP delta correction unit 138 becomes large.
  • the QP delta correction unit 138 corrects the QP value without decoding by accumulating the QP variation of the macroblocks not allocated to the target divided stream for each divided stream. Directly derive the QP variation.
  • FIG. 17 is an explanatory diagram for explaining accumulation of the QP variation.
  • the horizontal axis represents QP values
  • QP1 to QP4 indicate QP values in consecutive macroblocks.
  • “mb_qp_delta” representing the difference value of each QP value is shown.
  • the 2-digit number added at the end of “mb_qp_delta” indicates that the upper side indicates the number of the QP value corresponding to the preceding macroblock, and the lower side indicates the number of the QP value corresponding to the subsequent macroblock.
  • “mb_qp_delta12” represents the difference value between QP1 and QP2.
  • “mb_qp_delta” represents the difference value of the QP value in the axis in which 0 which is the minimum value of the QP value and 51 which is the maximum value are continuously connected.
  • QP2 is obtained from QP1 and "mb_qp_delta12" using equation (2).
  • QP3 is obtained from QP2 and "mb_qp_delta23”.
  • QP4 is obtained from QP3 and "mb_qp_delta34".
  • the total of the QP variation represented by “mb_qp_delta12”, “mb_qp_delta23”, and “mb_qp_delta34” is equal to “mb_qp_delta14” indicating the difference value between QP1 and QP4. That is, it can be understood that in order to obtain the QP variation between non-adjacent macroblocks, it is sufficient to accumulate all the QP variations "mb_qp_delta" between them.
  • the accumulation is performed according to the following equation (3).
  • Acc_mb_qp_delta (acc_mb_qp_delta + mb_qp_delta + 52)% 52 (3)
  • acc_mb_qp_delta indicates the accumulated “mb_qp_delta”.
  • the modification process of the QP variation of the macroblock C in the picture shown in FIG. 16A will be described as a specific example.
  • the macroblock located immediately before the macroblock C becomes the macroblock A. Therefore, in the macroblock C, the QP value of the macroblock A and the macroblock C The difference value of the QP value needs to be included as the QP variation.
  • the QP delta correction unit 138 accumulates the QP variation of the macroblock C and the QP variation of all the macroblocks included in the MB lines L3 to L5.
  • the modified QP variation which is the difference value between the QP value of macroblock A and the QP value of macroblock C You can determine the quantity.
  • the QP delta correction unit 138 makes the QP variation "mb_qp_delta" in the range of -26 to +25 according to the following equation (4). To correct.
  • the process shown in the equation (4) may be performed only once at the end after accumulating for all macro blocks of the accumulation target of the QP variation "mb_qp_delta" as shown here, or the accumulation target This may be performed for every macroblock for all macroblocks of.
  • the same processing is performed on the top macro block of all the MB lines.
  • the QP variation of all the macroblocks of the MB lines L4 to L6 is accumulated, and the modification is performed by reflecting on the corresponding macroblock. Deriving the QP variation. These processes are performed independently for each divided stream.
  • the QP delta correction unit 138 re-codes the corrected QP variation obtained in this way, and outputs the coded modified QP variation to the division point detection unit 139.
  • the QP delta modification unit 138a performs encoding in accordance with the CAVLC method
  • the QP delta modification unit 138b performs encoding in accordance with the CABAC method.
  • the QP delta correction unit 138 corrects the input QP variation so as to fit the context of the macroblocks in the split stream, thereby setting an appropriate QP variation for each split stream. can do.
  • the subsequent decoding engine 120 can decode the divided stream without requiring special processing.
  • FIG. 16B shows an example in which the slice is divided at the boundary between the MB lines L4 and L5.
  • the MB lines L1 to L4 are included in the slice A
  • the MB lines L5 to L8 are included in the slice B.
  • the second divided stream although the macroblock A and the macroblock C are continuous as in FIG. 16A, the slices in which the respective macroblocks are included are different, and between the macroblock A and the macroblock C. The dependency is gone.
  • the QP variation of macroblock C indicates the difference value between the QP value of macroblock C and the slice QP value of slice B. Need to be.
  • the QP delta modification unit 138 accumulates the QP variation for macroblocks included in slice B among macroblocks A to macroblock C, thereby obtaining the slice QP value of slice B. The difference value of can be obtained. However, whether or not the slice is actually divided can not be determined until the beginning of slice B arrives.
  • the QP delta correction unit 138 accumulates the QP variation for all macroblocks included between macroblock A and macroblock C, and at the start of macroblock processing at the beginning of slice B, the accumulated QP variation “ Reset acc_mb_qp_delta "to 0. By doing this, accumulation of the QP variation can be performed only on the macroblocks included in the slice B, and the corrected QP variation of the macroblock C can be correctly obtained.
  • the modified QP variation obtained in this manner is encoded again, and the encoded modified QP variation is output to the division point detection unit 139.
  • FIG. 18 is a flowchart showing the correction process of the QP variation by the QP delta modification unit 138.
  • the QP delta correction unit 138 When processing of the macro block is started, the QP delta correction unit 138 first calculates the position of the macro block in the picture from the address information of the process target macro block (step S300).
  • the QP delta correction unit 138 determines whether the processing target macroblock is at the beginning of the slice (step S302).
  • step S304 the accumulated QP variation "acc_mb_qp_delta" corresponding to all divided streams is reset to 0 (step S304).
  • the QP variation from the slice QP value can be correctly derived.
  • whether or not to reset the accumulated QP change amount is determined depending on whether it is the macroblock at the beginning of the slice, but it is sufficient if the accumulated QP change amount can be reset at the beginning of the slice. May be configured to reset the accumulated QP variation.
  • step S302 If it is determined in step S302 that the macroblock to be processed is not the beginning of the slice (No in step S302), or after the accumulated QP variation is reset in step S304, the QP delta correction unit 138 obtains it in step S300. From the position information of the macro block, the division stream output destination of the processing target macro block is determined (step S306).
  • the QP delta correction unit 138 determines the cumulative QP variation corresponding to the second, third, and fourth split streams as follows: The QP variation of the macroblock to be processed is accumulated according to equation (3) (step S308).
  • the QP delta correction unit 138 determines the cumulative QP variation corresponding to the first, third, and fourth split streams.
  • the QP variation of the macroblock to be processed is accumulated according to equation (3) (step S310).
  • the QP delta correction unit 138 determines the cumulative QP variation corresponding to the first, second, and fourth split streams.
  • the QP variation of the macroblock to be processed is accumulated according to equation (3) (step S312).
  • the QP delta correction unit 138 determines the cumulative QP variation corresponding to the first, second, and third split streams.
  • the QP variation of the macroblock to be processed is accumulated according to equation (3) (step S314).
  • steps S308 to S314 accumulation of the QP variation corresponding to divided streams other than the divided stream that is the output destination of the processing target macroblock is performed. This means that, in each divided stream, the QP variation of the macroblock included in the 3 MB line not allocated to the target divided stream is accumulated.
  • the QP delta correction unit 138 can correct the difference between the QP values of the macroblocks before and after the 3 MB line not allocated to the target divided stream correctly.
  • the QP delta correction unit 138 determines from the position information of the macro block obtained in step S300 that the macroblock to be processed is the beginning of the MB line. It is determined whether it is located at (step S316).
  • the configuration is shown in which the stream is divided in MB line units, but also in the case of dividing the stream in other division units, the QP delta correction unit 138 similarly processes the position information of the macro block. It may be determined whether the target macroblock is located at the beginning of the division unit.
  • the QP delta correction unit 138 determines the accumulated QP change amount corresponding to the divided stream including the processing target macroblock.
  • the QP variation of the macroblock to be processed is accumulated according to equation (3).
  • the QP delta correction unit 138 corrects the obtained accumulated QP change amount to be in the range of ⁇ 26 to +25 according to equation (4), and replaces it as the QP change amount of the processing target macroblock.
  • the QP delta correction unit 138 resets the accumulated QP variation corresponding to the divided stream including the processing target macroblock to 0 (step S318).
  • the accumulated QP variation is reflected in the QP variation of the macroblock at the head of the MB line, whereby the QP variation is corrected.
  • the QP delta correction unit 138 performs re-encoding processing of the QP variation of the processing target macroblock (step S320). This is divided stream H. This is to make the format compliant with the H.264 / AVC standard.
  • the QP delta correction unit 138 outputs the re-encoded QP variation to the division point detection unit 139 and ends the process (step S322).
  • the QP delta correction unit 138 corrects the QP variation for the top macroblock of the MB line, and then changes the QP variation as it is for the macroblocks other than the top of the MB line. Perform quantity re-encoding and output processing.
  • a coded picture is divided into a plurality of MB lines (structural units), and each of the plurality of MB lines is N as a part of the divided stream. Since the decoding engine 120 is assigned and decoded, the burden of decoding processing by the N decoding engines 120 can be equalized, and parallel processing of decoding can be appropriately performed. For example, H. Even if the H.264 / AVC coded picture is composed of one slice, the coded picture is divided into a plurality of MB lines, so that one decoding engine 120 is burdened with decoding of one slice. It is possible to share the N decoding engines 120 equally without having to do it.
  • slices extending over a plurality of MB lines are divided into a plurality of slice portions (for example, MB lines L1 to L6 shown in FIG. 3 or MB line L7). It may be divided into a set of top 6 macroblocks, etc., and their slice parts may be assigned to different divided streams. That is, one divided stream does not include the entire slice of a coded picture, and a slice portion group configured by gathering one or more slice portions that are fragments of that slice (for example, the third portion illustrated in FIG.
  • the MB lines L2 and L6) included in the 2-divided stream are included. Also, such a slice partial group (MB lines L2 and L6) may not include a slice header indicating the beginning thereof and slice end information indicating the end thereof.
  • a predetermined code word included in the encoded stream there are cases where multiple MB lines have a dependency.
  • a plurality of MB lines may have a dependency on each other depending on MB skip run information "mb_skip_run” and QP variation "mb_qp_delta". If such a coded stream is divided into a plurality of MB lines and allocated to different divided streams, the dependency between MB lines can not be maintained properly.
  • the stream division unit 130 reconstructs the slice partial group as a new slice.
  • the decoding engine 120 that decodes the divided stream including the slice partial group newly slices the slice partial group without requiring special processing for recognizing the slice partial group and decoding appropriately. It can be easily recognized and properly decoded. That is, in the present embodiment, since it is not necessary to provide each of the N decoding engines 120 with a function or configuration for performing special processing, the overall configuration of the image decoding apparatus 100 can be simplified.
  • the speed of the decoding process can be increased as compared with the image decoding apparatus according to Patent Document 3 described above.
  • the variable length decoding of the encoded stream and the parallelization of the deblocking filter process are not performed. That is, in the image decoding apparatus according to Patent Document 3, the encoded stream is not divided appropriately. In other words, a stream generated by dividing the encoded stream can be decoded by the conventional decoding engine. Not configured as.
  • each of the decoding engines 120 is variable as in the decoding engine 421 shown in FIG. Long decoding and deblocking filtering can be performed in parallel. As a result, in the image decoding apparatus according to the present embodiment, it is possible to accelerate the decoding process.
  • the present embodiment has an advantage that the conventional decoding engine can be diverted as compared with the image decoding device of Patent Document 4 described above.
  • the line header is inserted at the boundary of the MB line in the coded stream without dividing the coded stream. Therefore, the plurality of decoding engines of the image decoding apparatus of Patent Document 4 must extract MB lines to be processed from the coded stream, using the row header as a mark. At this time, if the position where the MB line to be processed is stored has already been specified, those decoding engines need to access the coded stream discontinuously in order to extract the MB line to be processed.
  • each of the decoding engines 120 is divided as in the decoding engine 421 shown in FIG.
  • the stream can be treated as a normal coded stream and decoded.
  • a conventional decoding engine can be diverted, and an effect that can not be achieved by the image decoding apparatus of Patent Document 4 can be obtained.
  • the image decoding apparatus 100 performs one of high resolution decoding, high speed decoding, and multi-channel decoding according to the above-described mode information input to the stream division unit 130. Run.
  • FIG. 19A is an explanatory diagram for describing high resolution decoding.
  • FIG. 19B is an explanatory diagram for explaining high-speed decoding.
  • FIG. 19C is an explanatory diagram for describing multi-channel decoding.
  • the stream division unit 130 of the image decoding apparatus 100 acquires mode information instructing execution of high resolution decoding as shown in FIG. 19A, the 4k2k coded stream is divided into four divided streams as described above. , And each of the four divided streams are decoded by each decoding engine 120.
  • each of the four decoding engines 120 has a processing capability capable of decoding HD images (1920 ⁇ 1088 pixels, 60i) for two channels
  • the image decoding apparatus 100 generates 4k2k images (3840 ⁇ 2160 pixels, 60p) can be processed in real time.
  • the stream division unit 130 of the image decoding apparatus 100 when the stream division unit 130 of the image decoding apparatus 100 obtains mode information instructing execution of high-speed decoding, it divides the HD encoded stream into four divided streams as described above. And each decoding engine 120 to decode each of the four divided streams.
  • each of the four decoding engines 120 has a processing capability capable of decoding two channels of HD images (1920 ⁇ 10 88 pixels, 60i)
  • the image decoding apparatus 100 performs eight-fold (4 ⁇ ) HD images. It can be processed in 2).
  • the stream division unit 130 of the image decoding apparatus 100 acquires mode information instructing execution of multi-channel decoding
  • the plurality of HD encoded streams are not divided without dividing the mode information.
  • the respective decoding engines 120 are made to decode each of the encoded streams of
  • the stream division unit 130 does not copy and insert various NAL units such as SPS, PPS, and slices, and distributes the encoded stream (channel) to each area of the divided stream buffer 152. Do only.
  • each of the four decoding engines 120 has a processing capability capable of decoding two channels of HD images (1920 ⁇ 10 88 pixels, 60i)
  • the image decoding apparatus 100 has a maximum of eight channels, that is, eight HDs.
  • the coded stream can be decoded simultaneously.
  • the clock frequency of the decoding engine 120 can be lowered to reduce power consumption.
  • the first decoding engine 120 and the second decoding engine 120 are each made to execute two channel decoding, and the remaining third decoding engine 120 and fourth decoding engine 120 are stopped. Let Alternatively, the first decoding engine 120 to the fourth decoding engine 120 are used, and their clock frequency is halved.
  • the image decoding apparatus 100 can switch the decoding process to any of high-resolution decoding, high-speed decoding, and multi-channel decoding according to the mode information. Can be improved.
  • high-resolution decoding and high-speed decoding in the image decoding apparatus 100 are processes for dividing a coded stream into four divided streams and decoding them in parallel, and are identical processes. That is, in high-resolution decoding and high-speed decoding, only the resolution and frame rate (4k2k or HD) of the encoded stream to be decoded are different.
  • the image decoding apparatus 100 switches the decoding process between high resolution decoding or high speed decoding and multi-channel decoding according to the mode information, and further performs decoding according to the resolution and frame rate of the encoded stream. Processing is switched to high resolution decoding and high speed decoding.
  • the image decoding apparatus 100 corrects the MB skip run information and the QP variation to obtain the dependency between consecutive MB lines in the pre-division coded stream, the MB lines in each divided stream. Corrected the dependency according to the context.
  • the coded stream may include macroblocks that do not include the QP variation.
  • the macroblocks not including the QP variation correspond to unquantized macroblocks.
  • macroblocks that do not include the QP variation are (1) skip macroblocks, (2) uncompressed macroblocks (I_PCM), or (3) intra prediction prediction mode is “ It is a macroblock that is not Intra 16 ⁇ 16 ′ ′ and “coded_block_pattern” is 0 (does not include any non-zero coefficient).
  • the image decoding apparatus 100 When a macroblock not including such a QP variation is present at the beginning of the MB line, the image decoding apparatus 100 according to the first embodiment does not have a QP variation to be corrected, so the QP variation Can not fix.
  • the image decoding apparatus 200 includes the macroblocks when generating a plurality of divided streams from the encoded stream including the macroblock not including the QP variation at the beginning of the MB line.
  • One feature is to insert the QP variation in the split stream. Thereby, the image decoding apparatus 200 can appropriately set the QP variation based on the new context in each divided stream.
  • the amount of change in QP when the amount of change in QP is inserted into the divided stream, the amount of change in QP exists between MB lines, so the number of consecutive skip macro blocks across MB lines is used as one MB skip run information. Can not show. Therefore, another feature of the image decoding apparatus 200 according to the second embodiment is that the MB skip run information is not recombined.
  • FIG. 20 is a block diagram showing a configuration of an image decoding apparatus according to Embodiment 2 of the present invention.
  • the same components as in FIG. 1 will be assigned the same reference numerals and descriptions thereof will be omitted.
  • the image decoding apparatus 200 includes a decoder 210 and a memory 150.
  • the decoder 210 reads and decodes the encoded stream stored in the stream buffer 151 of the memory 150 to generate decoded image data, and the decoded image data is stored in the frame memory 153 of the memory 150.
  • Store in The decoder 210 also includes a stream division unit 230 and N decoding engines (first decoding engine to Nth decoding engine) 220.
  • the stream division unit 230 executes the same processing as the stream division unit 130 except for the correction processing of the MB skip run information and the correction processing of the QP variation. The details of the stream division unit 230 will be described later with reference to FIG.
  • the N decoding engines 220 correspond to N decoding units that decode each of the N divided streams in parallel.
  • the N decoding engines 220 execute the same processing as the N decoding engines 120 except that the stream dividing unit 230 calculates the QP value using the accumulated QP variation amount inserted into the divided stream.
  • FIG. 21 is a block diagram showing the configuration of the stream division unit 230.
  • the stream division unit shown in FIG. 7 is that the stream division unit 230 includes a skip run correction unit 237a and QP delta insertion units 238a and 238b instead of the skip run correction unit 137a and the QP delta correction units 138a and 138b. Different from 130.
  • the skip run correction unit 237a performs the MB when the MB skip run information indicates the number of consecutive macro blocks across at least two MB lines allocated to different divided streams. MB skip run information is divided so as to indicate the number of blocks per line.
  • the skip run correction unit 237a does not combine a plurality of MB skip run information into one MB skip run information in each divided stream.
  • the QP delta insertion units 238a and 238b when the QP variation indicates the variation between macroblocks across two MB lines, Calculate the QP variation based on the new context.
  • the QP delta insertion units 238a and 238b output the calculated QP variation as a new QP variation to the division point detection unit 139.
  • a new QP variation is inserted (set) in each divided stream. That is, the QP delta insertion units 238a and 238b do not correct the QP variation included in each macroblock.
  • the division point detection unit 139a includes, in each of the division streams, the MB skip run information acquired from the skip run correction unit 237a and the cumulative QP variation acquired from the QP delta insertion unit 238a.
  • the division point detection unit 139 b includes the accumulated QP variation amount acquired from the QP delta insertion unit 238 b in each of the division streams.
  • QP delta insertion unit 238 when describing functions and processing operations common to the QP delta insertion units 238a and 238b, they are collectively referred to as the QP delta insertion unit 238 without distinction.
  • FIG. 22 is an explanatory diagram for describing correction processing of MB skip run information and insertion processing of QP variation.
  • the skip macroblock does not include the QP variation. Therefore, in the macroblock C, the difference value between the QP value of the macroblock B and the QP value of the macroblock C is encoded as the QP variation.
  • the macroblock including the QP variation located immediately before the macroblock C in the second divided stream including the macroblock C is the macroblock A. Therefore, when the second divided stream is decoded as it is, the QP variation, which is the difference value between the QP value of macroblock B and the QP value of macroblock C, is reflected on the QP value of macroblock A. As a result, the QP value of the macroblock C can not be decoded correctly.
  • the QP delta insertion unit 238 outputs, to the division point detection unit 139, a new QP change amount to be inserted into the MB line so as to correct the change in context of the macro block generated due to the division of the stream. . That is, the QP delta insertion unit 238 breaks the dependency when the two MB lines have a dependency by indicating the difference value of the QP value between the blocks where the QP variation crosses two MB lines. Thus, a new QP variation for insertion at the beginning of the MB line is output to the division point detection unit 139.
  • the QP variation is inserted at the top of the MB line, but the QP variation does not necessarily have to be inserted at the top of the MB line.
  • the QP variation may be inserted at another location such as in the top macroblock of the MB line.
  • the QP delta insertion unit 238 calculates an accumulated QP change amount obtained by accumulating the QP change amounts of all the macroblocks including the QP change amount included in the MB lines L3 to L5. Then, the QP delta insertion unit 238 again encodes the calculated accumulated QP change amount, and outputs the encoded accumulated QP change amount as a new QP change amount to the division point detection unit 139. As a result, as shown in FIG. 22, the accumulated QP variation is inserted at the head of the MB line L6. That is, the accumulated QP variation and the QP variation originally included in the macroblock C are set in the second divided stream.
  • the detailed calculation method of the accumulated QP variation is the same as that of the first embodiment, and thus the description thereof is omitted.
  • the QP delta insertion unit 238 has also encoded the accumulated QP that is encoded to insert the accumulated QP variation at the beginning of the MB line for other MB lines.
  • the change amount is output to the division point detection unit 139.
  • the QP delta insertion unit 238 accumulates the QP variation of all macro blocks including the QP variation included in the MB lines L4 to L6 as the cumulative QP variation to be inserted at the beginning of the MB line L7. Calculate the cumulative QP variation. Then, the QP delta insertion unit 238 encodes the calculated accumulated QP change amount, and outputs the encoded accumulated QP change amount to the division point detection unit 139.
  • the skip run correction unit 237a since the accumulated QP variation is inserted at the beginning of the MB line, skip macroblocks do not continue across the MB line. That is, unlike the skip run correction unit 137a according to the first embodiment, the skip run correction unit 237a does not combine MB skip run information.
  • the skip run correction unit 237a performs MB skip runs corresponding to eight skip macroblocks existing across the MB lines L2 to L3.
  • the information is divided into MB skip run information corresponding to five skip macroblocks included in the MB line L2 and MB skip run information corresponding to three skip macroblocks included in the MB line L3.
  • the skip run correction unit 237a corresponds to two skip macroblocks included in the MB line L5 with MB skip run information corresponding to six skip macroblocks existing across the MB lines L5 to L6. It is divided into MB skip run information and MB skip run information corresponding to four skip macroblocks included in the MB line L6.
  • the skip run correction unit 237a performs MB skip run information corresponding to five consecutive skip macroblocks included in the MB line L2 and MB corresponding to four consecutive skip macroblocks included in the MB line L6. Do not recombine with skip run information.
  • the skip run correction unit 237a re-encodes the MB skip run information thus obtained in the same manner as the skip run correction unit 137a, and outputs the encoded MB skip run information.
  • FIG. 23 is a block diagram showing the configuration of the skip run correction unit 237a.
  • the same components as in FIG. 14 will be assigned the same reference numerals and detailed explanations thereof will be omitted.
  • the skip run correction unit 237 a includes a skip run extraction unit 160, a skip run division unit 161, and a skip run encoding unit 164. That is, the skip run correction unit 237a is the same as the configuration of the skip run correction unit 137a in the first embodiment except the skip run accumulation / holding unit 162 and the addition unit 163.
  • the skip run division unit 161 outputs the divided MB skip run information to the skip run coding unit 164.
  • FIG. 24 is a flowchart showing the correction operation of the MB skip run information by the skip run correction unit 237a. Note that, in FIG. 24, the steps performing the same process as in FIG.
  • the skip run correction unit 237a checks whether the MB skip run information “mb_skip_run” has been acquired (step S202). That is, the skip run correction unit 237a does not determine whether the stream being processed has reached the slice end. This is because, as will be described later, the skip run correction unit 237a does not hold the preceding MB skip run information internally, and therefore, the output process of the preceding MB skip run information when reaching the slice end is unnecessary.
  • the skip run correction unit 237a returns to the beginning of the process and reads the stream again.
  • the skip run correction unit 237a uses the address information of the macro block including the corresponding MB skip run information, as in the first embodiment.
  • the position of the macro block in the picture is calculated (step S204).
  • the skip run correction unit 237a determines whether the acquired MB skip run information needs to be divided (step S206).
  • step S206 when it is determined that the consecutive skip macroblocks reach the MB line boundary (Yes in step S206), the skip run correction unit 237a proceeds to step S216 in order to divide the MB skip run information. Details will be described later.
  • the skip run correction unit 237a performs re-coding processing of MB skip run information (step S212).
  • steps S208 and S210 shown in FIG. 15 is not performed because the skip run correction unit 237a in the present embodiment does not recombine MB skip run information.
  • the skip run correction unit 237a outputs the re-coded MB skip run information to the division point detection unit 139a, and ends the processing (step S214).
  • step S206 When it is determined in step S206 that consecutive skip macroblocks reach the MB line boundary (Yes in step S206), the skip run correction unit 237a uses the MB line boundary as a division point, as in the first embodiment. Then, the corresponding MB skip run information is divided into the first half and the second half (step S216).
  • the skip run correction unit 237a re-encodes the former half of the divided MB skip run information as MB skip run information (step S250). Thereafter, the skip run correction unit 237a outputs the re-coded MB skip run information to the division point detection unit 139a (step S252). That is, in the present embodiment, since it is not necessary to recombine MB skip run information, the preceding MB skip run information is not internally held as in the first embodiment.
  • the skip run correction unit 237a sets the second half of the divided MB skip run information as new MB skip run information (step S220), and then the length is 0. It is determined whether there is any (step S222).
  • step S222 When it is determined in step S222 that the length of the new MB skip run information is 0 (Yes in step S222), the skip run correction unit 237a performs processing assuming that there is no more MB skip run information to be processed. Finish.
  • step S222 If it is determined in step S222 that the length of the new MB skip run information is not 0 (Yes in step S222), the skip run correction unit 137a determines that there is still MB skip run information to be processed in step S204. Return and perform MB skip run information division and output processing again.
  • FIG. 25 is a flowchart showing insertion processing of the accumulated QP variation by the QP delta insertion unit 238.
  • the steps performing the same processing as FIG. 18 will be assigned the same reference numerals and detailed descriptions thereof will be omitted.
  • the QP delta insertion unit 238 executes the process from step S300 to step S316 as in the first embodiment.
  • the QP delta insertion unit 238 changes the accumulated QP corresponding to the divided stream to which the processing target macroblock is allocated.
  • the amount is encoded and output to the division point detection unit 139 (step S352). That is, the QP delta insertion unit 238 outputs the accumulated QP variation before outputting the MB information.
  • the QP delta insertion unit 238 resets the accumulated QP variation corresponding to the division stream including the processing target macroblock to 0 (step S354). Then, the QP delta insertion unit 238 outputs the MB information to the division point detection unit 139, and ends the processing (step S356). That is, when the MB variation contains the QP variation, the QP delta insertion unit 238 outputs the QP variation without correcting it.
  • the QP delta insertion unit 238 outputs the MB information to the division point detection unit 139 and ends the process. (Step S350). That is, when the MB information includes the QP variation, the QP delta insertion unit 238 outputs the MB information without correcting the QP variation.
  • the QP delta insertion unit 238 divides the new QP variation (cumulative QP variation) accumulated for insertion at the beginning of the MB line and the QP variation included in the encoded stream. It outputs to the point detection unit 139.
  • the burden of the decoding process by the N decoding engines 220 can be equalized. Parallel processing of decoding can be properly performed.
  • the image decoding apparatus 200 inserts a new QP variation into the MB line.
  • the correct QP value can be obtained when the decoding process is performed in parallel.
  • the image decoding apparatus 200 according to the present embodiment as illustrated in FIGS. 19A to 19C according to the mode information input to the stream division unit 230. Perform any of the high resolution decoding, high speed decoding, and multi-channel decoding shown in FIG.
  • the image decoding apparatus 200 can switch the decoding process to any one of high resolution decoding, high speed decoding, and multi-channel decoding according to the mode information, so that the user's usability can be improved. It can be improved.
  • FIG. 26 is a diagram showing an application example of the image decoding apparatus according to the first and second embodiments.
  • the image decoding apparatus is provided in the reproduction apparatus 101 that receives a broadcast wave and reproduces a coded stream included in the broadcast wave.
  • the reproduction apparatus 101 includes an antenna 101a for receiving a broadcast wave of BS digital broadcast and an apparatus main body 101b, and the apparatus main body 101b includes the above-described image decoding apparatus.
  • the image decoding apparatus provided in the apparatus main body 101b extracts, for example, a 4k2k encoded stream from the broadcast wave received by the antenna 101a. Then, as described above, the image decoding apparatus divides the extracted encoded stream to generate N divided streams, and decodes the N divided streams in parallel.
  • the image decoding apparatus 100, 200 includes the divided stream buffer 152 and the like, but may not include these.
  • FIG. 27 is a block diagram showing the minimum configuration of the image decoding apparatus in the embodiment of the present invention.
  • the image decoding apparatus 10 has a minimum configuration for realizing the present invention, and includes an acquisition unit 11, a stream division unit 12, and N decoding units 13.
  • the acquisition unit 11 corresponds to an acquisition device (or a simple acquisition port) for taking a coded stream from the stream buffer 151 or the stream buffer 151 to the image decoding apparatus 10, and is a coded stream obtained by coding image data. get.
  • the stream division unit 12 corresponds to the stream division units 130 and 230. That is, for each encoded picture included in the encoded stream acquired by the acquisition unit 11, the stream division unit 12 divides the encoded picture into a plurality of constituent units, and each of the plurality of constituent units is a generation target.
  • the N divided streams are generated by assigning to any part of N divided streams (N is an integer of 2 or more) that is.
  • the N decoding units 13 correspond to the decoding engines 120 and 220, and decode in parallel each of the N divided streams generated by the stream division unit 12.
  • the stream division unit 12 when the stream division unit 12 generates a number N of divided streams, when a slice included in a coded picture is divided into a plurality of slice parts and allocated to a plurality of divided streams, the stream division unit 12 divides the slices for each divided stream.
  • the slice subsets are reconstructed as new slices so that a slice subset consisting of at least one slice portion assigned to the split stream is recognized as a slice by any of the N decoding units 13.
  • the coded picture is divided into constituent units such as a plurality of macroblock lines, for example, and each of the plurality of macroblock lines is allocated to N decoding units as part of a divided stream and decoded.
  • the burden of decoding processing by the N decoding units can be equalized, and parallel processing of decoding can be appropriately performed.
  • H. Even if the H.264 / AVC coded picture is composed of one slice, the coded picture is divided into a plurality of macroblock lines, so that decoding of one slice is performed by one decoding unit.
  • the burden can be evenly shared by the N decoding units without burdening.
  • slices across a plurality of macroblock lines may be divided into a plurality of slice portions, and those slice portions may be allocated to different division streams.
  • one divided stream does not include the entire slice of a coded picture, but includes a slice portion group configured by gathering one or more slice portions that are fragments of the slice.
  • such a slice portion group may not include a header indicating the beginning thereof and end information indicating the end thereof.
  • at least two successive slice portions in the coded stream may have a dependency on a predetermined code word included in the coded stream.
  • the decoding unit 13 that decodes the divided stream including the slice partial group recognizes the slice partial group and decodes appropriately.
  • the slice sub-groups can be easily recognized as new slices and appropriately decoded without requiring special processing to convert them. That is, in the above embodiment, since it is not necessary to provide a function or configuration for performing special processing to each of the N decoding units 13, the decoding circuit for decoding the divided stream is a conventional decoding circuit. This can be diverted, and the overall configuration of the image decoding apparatus can be simplified.
  • the image decoding apparatus 10 does not require the divided stream buffer 152 or the like in the above-described embodiment, and can achieve the above-described object with the above-mentioned effects unique to the present invention even without them.
  • 1 MB line is treated as one constitutional unit and the picture is divided into a plurality of constitutional units, but the constitutional unit is not limited to 1 MB line, but may be 2 MB line or 3 MB line , And may be a plurality of macroblocks arranged in a line in the vertical direction of the picture.
  • 2 MB lines may be treated as a constituent unit
  • 1 MB line may be treated as a constituent unit.
  • the stream division unit inserts the duplicate slice header into the split stream, and the decoding engine reads out and decodes the split stream into which the duplicate slice header is inserted.
  • the stream segmentation unit may directly output the duplicate slice header to the decoding engine without inserting the duplicate slice header into the split stream. For example, the stream division unit determines whether or not the duplicate slice header should exist immediately before the MB line in the divided stream read into the decoding engine, and when it is determined that the duplicate slice header should exist, the MB line is read into the decoding engine Just before being sent out, the duplicate slice header is output to the decoding engine.
  • the stream division unit may output only partial information included in the duplicate slice header to the decoding engine without outputting the duplicate slice header itself to the decoding engine.
  • the stream division unit executes either the correction of the QP variation or the insertion of the QP variation, but may perform both.
  • the stream division unit may determine, for example, whether or not the leading macroblock of the MB line includes the QP variation.
  • the stream division unit may replace the QP variation of the macroblock (steps S318 to S322 in FIG. 18).
  • the stream division unit may output the accumulated QP variation and the like (steps S352 to S356 in FIG. 25).
  • the skip run correction unit is configured, for example, when MB skip run information is located at the beginning of the MB line. It is preferable to determine whether the QP variation is inserted at the beginning of the MB line.
  • the skip run correction unit may add the preceding MB skip run information to the MB skip run information (S210 in FIG. 15).
  • the preceding MB skip run information and the MB skip run information may be output as MB skip run information.
  • the first code word is MB skip run information
  • the first code word does not necessarily have to be MB skip run information.
  • the first code word may be a code word indicating that macro blocks of a type different from the skip macro block are continuous.
  • the second code word is the QP variation, but the second code word does not necessarily have to be the QP variation.
  • the second code word may be a code word that indicates the amount of change in coding coefficients between macroblocks, which is different from the amount of QP change.
  • LSI Large Scale Integration
  • Ru Large Scale Integration
  • an LSI Although an LSI is used here, it may be called an IC (Integrated Circuit), a system LSI, a super LSI, or an ultra LSI depending on the degree of integration.
  • IC Integrated Circuit
  • system LSI system LSI
  • super LSI super LSI
  • ultra LSI ultra LSI depending on the degree of integration.
  • the method of circuit integration is not limited to LSI's, and implementation using dedicated circuitry or general purpose processors is also possible.
  • a field programmable gate array FPGA
  • a reconfigurable processor that can reconfigure connection and setting of circuit cells in the LSI may be used.
  • the image decoding apparatus has the effect of being able to appropriately execute parallel processing of decoding with a simple configuration, and is useful as, for example, a reproduction apparatus that decodes a 4k2k encoded stream.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

 符号化ストリームに含まれるピクチャ毎に、複数のMBラインに分割し、それぞれを複数の分割ストリームのうちの何れかの一部に割り当てることにより、並列に復号できる複数の分割ストリームを生成するストリーム分割部を備え、ストリーム分割部は、ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリーム毎に、その分割ストリームに割り当てられる複数のスライス部分からなるスライス部分群が、復号装置にスライスとして認識されるように再構成する。このとき、連続する2つのMBラインが、所定の符号語(例えばQP値変化量やMBスキップラン情報)による依存関係を有するときには、その依存関係が各分割ストリームにおけるMBラインの前後関係に応じた新たな依存関係となるように、符号語を分割ストリームに設定する。

Description

画像復号化装置および画像復号化方法
 本発明は、画像データが符号化された符号化ストリームを復号化する画像復号化装置および画像復号化方法に関し、特に、復号化を並列に実行する画像復号化装置および画像復号化方法に関する。
 動画像を符号化する画像符号化装置は、動画像を構成する各ピクチャをマクロブロックに分割し、マクロブロックごとに符号化する。そして、画像符号化装置は、符号化された動画像を示す符号化ストリームを生成する。
 図28は、符号化されるピクチャの構成を示す図である。
 ピクチャは16×16画素からなるマクロブロックに分割されて符号化される。ここで、そのピクチャに含まれる複数のマクロブロックからスライスが構成され、複数のスライスからピクチャが構成される。また、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を1つ有する構成単位をマクロブロックライン(MBライン)という。
 図29は、符号化ストリームの構成を示す図である。
 符号化ストリームは、階層化されており、図29の(a)に示すように、ヘッダと、符号化順に配列された複数のピクチャとを含んで構成されている。なお、上述のヘッダには、例えば、複数のピクチャからなるシーケンスを復号化するために参照されるシーケンスパラメータセット(SPS)が含まれる。また、その符号化されたピクチャは、図29の(b)に示すように、ヘッダと、複数のスライスとを含んで構成され、スライスは、図29の(c)に示すように、ヘッダと、複数のマクロブロック(MB)とを含んで構成されている。なお、図29の(b)に示すピクチャの先頭にあるヘッダには、例えば、そのピクチャを復号化するために参照されるピクチャパラメータセット(PPS)が含まれる。
 図30は、従来の画像復号化装置の構成を示す図である。
 画像復号化装置300は、メモリ310およびデコードエンジン320を備えている。メモリ310は、符号化ストリームを記憶するための領域を有するストリームバッファ311と、デコードエンジン320から出力される復号画像データを記憶するための領域を有するフレームメモリ312とを備えている。画像復号化装置300は、符号化ストリームに含まれるマクロブロックやピクチャなどの符号化画像データを先頭側から順次取得すると、その符号化画像データをストリームバッファ311に格納する。
 デコードエンジン320は、そのストリームバッファ311から復号化順に符号化画像データを順次読み出して復号化し、その復号化によって生成された復号画像データをフレームメモリ312に格納する。また、デコードエンジン320は、復号化するときには、フレームメモリ312に既に格納されている復号画像データを参照しながら、符号化画像データを復号化する。
 そして、フレームメモリ312に格納された復号画像データは、表示順に表示装置に出力されて表示される。
 図31は、デコードエンジン320の構成を示す図である。
 デコードエンジン320は、エントロピー復号部321、逆変換部322、加算器323、デブロッキングフィルタ324、動き補償部325、重み付き予測部326、画面内予測部327、およびスイッチ328を備えている。
 エントロピー復号部321は、符号化画像データをエントロピー復号化して量子化値を示す量子化データを生成して逆変換部322に出力する。
 逆変換部322は、その量子化データに対して逆量子化および逆直交変換などを行うことによって、その量子化データを差分画像データに変換する。
 加算器323は、逆変換部322から出力された差分画像データと、重み付き予測部326または画面内予測部327からスイッチ328を介して出力された予測画像データとを加算することにより復号画像データを生成する。
 デブロッキングフィルタ324は、加算器によって生成された復号画像データに含まれている符号化歪みを除去して、符号化歪みが除去された復号画像データをフレームメモリ312に格納する。
 動き補償部325は、フレームメモリ312に格納されている復号画像データを読み出して動き補償を行うことにより予測画像データを生成し、その予測画像データを重み付き予測部326に出力する。
 重み付き予測部326は、動き補償部325から出力された予測画像データに重みを付けてスイッチ328に出力する。
 画面内予測部327は画面内予測を行う。つまり、画面内予測部327は、加算器323によって生成された復号画像データを用いて画面内予測を行うことによって予測画像データを生成してスイッチ328に出力する。
 スイッチ328は、逆変換部322から出力される差分画像データが画面内予測によって生成されている場合には、画面内予測部327から出力される予測画像データを加算器323に出力する。また、スイッチ328は、逆変換部322から出力される差分画像データが画面間予測によって生成されている場合には、重み付き予測部326から出力される予測画像データを加算器323に出力する。
 ところで、近年、画像の高精細化および高フレームレート化が進んでいる。つまり、現在のところ、HD(High Definition)の画像の符号化および復号化が行われているが、その画像よりもさらに高精細化および高フレームレート化が行われようとしている。具体的には、いわゆる4k2k解像度による動画像の実用化が検討されている。
 図32は、HDおよび4k2kを説明するための説明図である。
 HDの符号化ストリームは、地上デジタル放送やBSデジタル放送などで配信されており、解像度「1920×1080画素」のピクチャが30フレーム/秒のフレームレートで復号化されて表示される。4k2kの符号化ストリームは、2011年から高度BSデジタル放送で試験的に配信される予定であり、解像度「3840×2160画素」のピクチャが60フレーム/秒のフレームレートで復号化されて表示される。
 つまり、4k2kでは、HDよりも縦および横のそれぞれで2倍の解像度を有し、且つ2倍のフレームレートを有する。
 さらに、縦および横のそれぞれで4k2kの2倍に高解像度化された8k4kの画像(7680×4320画素)の符号化および復号化が検討されようとしている。
 このような画像の高精細化および高フレームレート化が進むと、画像復号化装置のデコードエンジンの処理負荷が多大になってしまう。例えば、図30に示す画像復号化装置300のデコードエンジン320は、4k2kの符号化ストリームを復号化する場合には、現実的には困難な1GHz以上の動作周波数を必要とする。そこで、復号化の並列処理が検討されている。
 図33は、復号化の並列処理を実行する画像復号化装置の構成の一例を示すブロック図である。
 画像復号化装置400は、メモリ310およびデコーダ420を備えている。デコーダ420は、図30および図31に示すデコードエンジン320と同様の機能を有するデコードエンジン421をN個(例えばN=4)備えている。N個のデコードエンジン421(第1デコードエンジン421~第Nデコードエンジン421)のそれぞれは、ストリームバッファ311に格納された符号化ストリームから、自らが処理すべき部分を抽出し、その抽出された部分を復号化してフレームメモリ312に出力する。
 図34Aおよび図34Bは、復号化の並列処理の一例を説明するための説明図である。
 例えば、画像復号化装置400は、4つの領域符号化ストリームからなる符号化ストリームを取得してストリームバッファ311に格納する。これらの4つの領域符号化ストリームのそれぞれは、独立したストリームであり、図34Aに示すように、一つの画面が4等分されたうちの1つの領域の動画像を示すストリームである。画像復号化装置400の4つのデコードエンジン421(例えばN=4)はそれぞれ、自らが処理すべき領域符号化ストリームをストリームバッファ311から抽出して復号化し、その領域符号化ストリームに対応する領域に動画像を表示させる。
 または、画像復号化装置400は、4つのスライスからなるピクチャを含む符号化ストリームを取得してストリームバッファ311に格納する。4つのスライスは、図34Bに示すように、ピクチャを縦方向に4等分することによって生成されている。画像復号化装置400の4つのデコードエンジン421(例えばN=4)はそれぞれ、自らが処理すべきスライスをストリームバッファ311から抽出して復号化し、そのスライスに対応する領域に動画像を表示させる。
 しかしながら、図34Aに示すように、1つの符号化ストリームを4つの領域符号化ストリームとして生成してそれらを復号化することは、動画像の符号化方法に制約を加える必要がある。つまり、システム全体の変更が必要となり、その負担は膨大である。
 また、図34Bに示すように、1つのピクチャを4等分し、分割された各部分をスライスとして符号化して復号化することも、動画像の符号化方法に制約を加える必要がある。
 具体的には、動画像の符号化および復号化の規格であるMPEG-2(Moving Picture Experts Group phase 2)では、MBラインの境界で必ずスライスが分離されている。また、H.264/AVCでは、ピクチャに設定されるスライスの大きさや位置は任意であり、1ピクチャに1スライスしか設定されない場合もある。したがって、図34Bに示すように、スライスの位置および大きさを一義的に設定してしまうことは、デジタル放送システムの運用規格など、システム全体の変更が必要となり、その負担は膨大である。
 そこで、そのような運用規格に制約や変更を加えることなく、その規格に従って符号化された動画像を示す符号化ストリームを並列に復号化する画像復号化装置も検討されている。
 例えば、特許文献1および特許文献2の画像復号化装置は、MPEG-2により生成された符号化ストリームのピクチャをスライスごとに分離し、各スライスの復号化処理を並列に実行する。
 また、特許文献3の画像復号化装置は、H.264/AVCにより生成された符号化ストリームのピクチャをMBラインごとに分離し、各MBラインの復号化処理を並列に実行する。
 図35は、特許文献3の画像復号化装置による復号化処理を説明するための説明図である。
 画像復号化装置の第1デコードエンジンは、ピクチャにある0行目のMBラインを復号化し、2番目のデコードエンジンは、ピクチャにある1行目のMBラインを復号化し、3番目のデコードエンジンは、ピクチャにある2行目のMBラインを復号化する。
 また、各デコードエンジンは、MBラインの左端から右端へ向ってマクロブロックを順次復号化する。ここで、マクロブロックの復号化では、復号化対象のマクロブロックと、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックとの間に依存関係がある。つまり、各デコードエンジンは、マクロブロックを復号化するときには、その復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化によって得られた情報を必要とする。したがって、各デコードエンジンは、それらのマクロブロックの復号化が終了した後に、その復号化対象のマクロブロックの復号化を開始する。なお、各デコードエンジンは、左、左上、上、および右上のマクロブロックのうちの何れかが存在しない場合には、それ以外のマクロブロックの復号化が終了した後に、その復号化対象マクロブロックの復号化を開始する。つまり、画像復号化装置は、桂馬飛びの位置にあるマクロブロックの復号化を並列に実行する。
 特許文献4の画像復号化装置は、H.264/AVCにより生成された符号化ストリームを取得すると、その符号化ストリームのMBラインの境界に行ヘッダを挿入し、各MBラインの復号化処理を並列に実行する。この画像復号化装置のデコードエンジンのそれぞれは、行ヘッダを目印にして自らが処理すべきMBラインを符号化ストリームから抽出し、そのMBラインの復号化を実行する。
特開平6-225278号公報 特開平8-130745号公報 特開2006-129284号公報 米国特許第7305036号明細書
 しかしながら、上記特許文献1~4の画像復号化装置では、復号化の並列処理を適切に実行できないという問題や、装置の構成が複雑になってしまうという問題がある。
 つまり、上記特許文献1および特許文献2の画像復号化装置では、ピクチャをスライスごとに分割して複数のスライスの復号化を並列に実行するため、H.264/AVCの符号化ストリームのようにスライスの大きさや位置が任意に設定されている符号化ストリームに対して、復号化の並列処理を適切に実行することができない。言い換えれば、画像復号化装置に備えられた複数のデコードエンジンのそれぞれで負荷の偏りなどが生じ、並列処理を有効に活用した復号化を実行することができない。例えば、1ピクチャが1スライスで構成されている場合には、そのピクチャを分割することができず、1つのデコードエンジンがそのピクチャ全体の復号化を実行しなければならない。
 また、上記特許文献3および特許文献4の画像復号化装置では、H.264/AVCのピクチャに含まれているスライスを分割してしまうことがある。この場合には、デコードエンジンのそれぞれに、分割されたスライスの一部分をスライスとして適切に認識するための機能を備える必要があり、画像復号化装置の構成が複雑になってしまう。
 そこで、本発明は、かかる問題に鑑みてなされたものであって、簡単な構成で復号化の並列処理を適切に実行する画像復号化装置および画像復号化方法を提供することを目的とする。
 上記目的を達成するために、本発明の一態様に係る画像復号化装置は、画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、符号化ストリームを取得する取得部と、前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成するストリーム分割部と、前記ストリーム分割部により生成されたN個の分割ストリームのそれぞれを並列に復号化するN個の復号化部とを備え、前記ストリーム分割部は、前記N個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、前記N個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも1つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する。
 これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてN個の復号化部に割り当てられて復号化されるため、N個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、H.264/AVCの符号化ピクチャが1スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その1スライスの復号化を1つの復号化部で負担することなく、N個の復号化部で均等に負担することができる。
 ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、1つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が1つ以上集まって構成されるスライス部分群が含まれることとなる。
 そのため、このようなスライス部分群では、符号化ピクチャが分割される前に対してマクロブロックライン単位での前後関係が変化している。したがって、連続する複数のマクロブロックラインが、所定の符号語による依存関係を有する場合、その依存関係が保てなくなり、そのままでは復号化部は分割ストリームを復号化できない。
 そこで本発明では、このようなスライス部分群内で連続するマクロブロックラインの新たな前後関係に従って分割ストリームに符号語を設定する。これにより、スライス部分群は新たなスライスとして再構成されるため、そのスライス部分群を含む分割ストリームを復号化する復号化部は、そのスライス部分群を認識するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識することができる。つまり、本発明では、N個の復号化部のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置の全体構成を簡単にすることができる。
 また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第1の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第1の符号語が、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも2つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第1の符号語を、前記少なくとも2つの連続するスライス部分がそれぞれ割り当てられる少なくとも2つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
 これにより、符号化ストリームに第1の符号語が含まれる場合であっても、第1の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第1の符号語を適切に復号化することができる。
 また、前記ストリーム分割部は、さらに、各分割ストリームにおいて、設定される複数の第1の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第1の符号語を、前記複数の第1の符号語のそれぞれが示す個数の総和を示す1つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
 これにより、符号化ストリームに第1の符号語が含まれ、かつ再構成前には分割ストリーム内で第1の符号語が連続する場合であっても、第1の符号語が各々の分割ストリームで適切な値を示すように修正されるため、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第1の符号語を適切に復号化することができる。
 また、前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第2の符号語であり、前記ストリーム分割部は、前記符号化ストリームに含まれる第2の符号語が、符号化ストリームにおいて連続する2つのスライス部分に跨るブロック間の変化量を示すことにより、前記2つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記2つのスライス部分がそれぞれ割り当てられる2つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成することが好ましい。
 これにより、符号化ストリームに第2の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第2の符号語に基づいて適切な値が算出されるように、符号語が分割ストリームに設定される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第2の符号語から符号化係数を復元することができる。
 また、前記ストリーム分割部は、計算した変化量に修正した前記第2の符号語を前記分割ストリームに設定するとしてもよい。
 これにより、符号化ストリームに第2の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第2の符号語に基づいて適切な値が算出されるように、第2の符号語が修正される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第2の符号語から符号化係数を復元することができる。
 また、前記ストリーム分割部は、計算した変化量を示す新たな符号語と前記第2の符号語とを前記分割ストリームに設定するとしてもよい。
 これにより、符号化ストリームに第2の符号語が含まれる場合であっても、各々の分割ストリームにおいて、第2の符号語に基づいて適切な値が算出されるように、分割ストリームに新たな符号語が挿入される。したがって、その分割ストリームを復号化する復号化部は、特別な処理を行うことなく、第2の符号語から符号化係数を復元することができる。
 また、前記ストリーム分割部は、前記符号化ストリームに含まれる第2の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。
 これにより、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を簡易な方法で計算することができる。
 また、前記ストリーム分割部は、前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第2の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算するとしてもよい。
 また、前記ストリーム分割部は、第2の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を0にリセットすることが好ましい。
 これにより、各ブロックの符号化係数を復元することなく、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算することができるため、ストリーム分割部の構成を簡単にすることが出来る。
 なお、本発明は、このような画像復号化装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
 本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという作用効果を奏する。
図1は、本発明の実施の形態1における画像復号化装置の構成を示すブロック図である。 図2Aは、本発明の実施の形態1におけるピクチャがMBAFFで構成されていない場合の復号化の順序を示す図である。 図2Bは、本発明の実施の形態1におけるピクチャがMBAFFで構成されている場合の復号化の順序を示す図である。 図3は、本発明の実施の形態1におけるスライスヘッダの挿入処理を説明するための説明図である。 図4は、本発明の実施の形態1におけるMBアドレス情報の更新処理を説明するための説明図である。 図5は、本発明の実施の形態1におけるスライス終端処理を説明するための説明図である。 図6は、本発明の実施の形態1における画像復号化装置の全体的な動きを示すフローチャートである。 図7は、本発明の実施の形態1におけるストリーム分割部の構成を示すブロック図である。 図8は、本発明の実施の形態1におけるスライスヘッダ挿入部およびスライスデータ処理部の動作を説明するための説明図である。 図9は、本発明の実施の形態1におけるスライスヘッダ挿入部の構成を示すブロック図である。 図10は、本発明の実施の形態1における分割ストリームバッファの第1領域~第4領域に割り当てられるMBラインおよびスライスヘッダを示す図である。 図11Aは、本発明の実施の形態1におけるスライス終端情報が設定される位置を示す図である。 図11Bは、本発明の実施の形態1におけるスライス終端情報が設定される位置を示す図である。 図12は、本発明の実施の形態1における分割点検出部の動作を示すフローチャートである。 図13Aは、本発明の実施の形態1におけるMBスキップラン情報の修正処理を説明するための説明図である。 図13Bは、本発明の実施の形態1におけるMBスキップラン情報の修正処理を説明するための説明図である。 図14は、本発明の実施の形態1におけるスキップラン修正部の構成を示すブロック図である。 図15は、本発明の実施の形態1におけるスキップラン修正部によるMBスキップラン情報の修正動作を示すフローチャートである。 図16Aは、本発明の実施の形態1におけるQP変化量の修正処理を説明するための説明図である。 図16Bは、本発明の実施の形態1におけるQP変化量の修正処理を説明するための説明図である。 図17は、本発明の実施の形態1におけるQP変化量の累積を説明するための説明図である。 図18は、本発明の実施の形態1におけるQPデルタ修正部によるQP変化量の修正処理を示すフローチャートである。 図19Aは、本発明の実施の形態1における高解像度デコードを説明するための説明図である。 図19Bは、本発明の実施の形態1における高速デコードを説明するための説明図である。 図19Cは、本発明の実施の形態1における複数チャンネルデコードを説明するための説明図である。 図20は、本発明の実施の形態2における画像復号化装置の構成を示すブロック図である。 図21は、本発明の実施の形態2におけるストリーム分割部の構成を示すブロック図である。 図22は、本発明の実施の形態2におけるMBスキップラン情報の修正処理およびQP変化量の挿入処理を説明するための説明図である。 図23は、本発明の実施の形態2におけるスキップラン修正部の構成を示すブロック図である。 図24は、本発明の実施の形態2におけるスキップラン修正部によるMBスキップラン情報の修正動作を示すフローチャートである。 図25は、本発明の実施の形態2におけるQPデルタ挿入部による累積QP変化量の挿入処理を示すフローチャートである。 図26は、本発明の実施の形態に係る画像復号化装置の適用例を示す図である。 図27は、本発明の実施の形態に係る画像復号化装置の最小構成を示すブロック図である。 図28は、符号化されるピクチャの構成を示す図である。 図29は、符号化ストリームの構成を示す図である。 図30は、従来の画像復号化装置の構成を示す図である。 図31は、従来のデコードエンジンの構成を示す図である。 図32は、HDおよび4k2kを説明するための説明図である。 図33は、従来の復号化並列処理を実行する画像復号化装置の構成を示すブロック図である。 図34Aは、従来の復号化並列処理の一例を説明するための説明図である。 図34Bは、従来の復号化並列処理の一例を説明するための説明図である。 図35は、従来の画像復号化装置による復号化処理を説明するための説明図である。
 以下、本発明の実施の形態における画像復号化装置について図面を参照しながら説明する。
 (実施の形態1)
 図1は、本発明の実施の形態1における画像復号化装置の構成を示すブロック図である。
 本実施の形態における画像復号化装置100は、簡単な構成で復号化の並列処理を適切に実行する装置であって、デコーダ110とメモリ150とを備えている。
 メモリ150は、デコーダ110に入力されるデータ、デコーダ110により中間的に生成されたデータ、およびデコーダ110により最終的に生成されて出力されるデータを記憶するための領域を有する。
 具体的には、メモリ150は、ストリームバッファ151と、分割ストリームバッファ152と、フレームメモリ153とを備えている。
 ストリームバッファ151には、画像符号化装置により生成されて送信された符号化ストリームが格納される。つまり、本実施の形態では、このストリームバッファ151が符号化ストリームを取得する取得部として構成されている。分割ストリームバッファ152には、デコーダ110により生成されるN個の分割ストリームが、上述の中間的に生成されたデータとして格納される。フレームメモリ153には、N個のデコードエンジン(復号化部)120によって生成されたN個の分割復号画像データが、上述の最終的に生成されて出力されるデータとして格納される。なお、復号画像データは、フレームメモリ153に格納され、表示装置に読み込まれて動画像として表示される。
 デコーダ110は、メモリ150のストリームバッファ151に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ150のフレームメモリ153に格納する。また、このデコーダ110は、ストリーム分割部130と、N個のデコードエンジン(第1デコードエンジン~第Nデコードエンジン)120とを備えている。
 なお、本実施の形態におけるデコードエンジン120は、HDの画像(1920×1088画素、60i)を2チャンネル分復号可能な処理能力を有する。
 ストリーム分割部130は、後述するモード情報を取得し、そのモード情報に応じて符号化ストリームをN個の分割ストリーム(第1分割ストリーム~第N分割ストリーム)に分割する。つまり、本実施の形態におけるストリーム分割部130は、符号化ストリームに含まれる符号化されたピクチャごとに、そのピクチャを複数のMBラインに分割する。そして、ストリーム分割部130は、それらの複数のMBラインのそれぞれを、生成対象であるN個の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成する。
 なお、MBラインは、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列を1つ有する構成単位である。また、ストリーム分割部130は、ピクチャがMBAFF(マクロブロックアダプティブフレームフィールド)で構成されていない場合には、ピクチャを複数のMBラインに分割するが、ピクチャがMBAFFで構成されている場合には、2つのMBラインを1つの構成単位(以下、MBラインペアという)として扱い、ピクチャを複数のMBラインペアに分割する。言い換えれば、ストリーム分割部130は、ピクチャがMBAFFで構成されている場合には、ピクチャを複数のMBラインに分割し、MBラインペアに属する2つのMBラインをそれぞれ同一の分割ストリームの一部に割り当てる。以下、ピクチャがMBAFFで構成されていないことを前提にして本発明を説明するが、本発明において、ピクチャがMBAFFで構成されていない場合と、MBAFFで構成されている場合とで異なる処理が必要なときには、その都度、MBAFFに対して特有の処理を説明する。また、MBAFFに対してその特有な処理などが必要とされない場合には、以下の説明において、MBラインをMBラインペアに置き換えることによって、その説明を、ピクチャがMBAFFで構成されている場合における本発明の説明に置き換えることができる。
 ストリーム分割部130は、ピクチャを複数のMBラインに分割する際に、符号化ストリーム中のMBラインの直前、または、そのMBラインに属する2つのマクロブロックの間に、ヘッダがあれば、そのヘッダをそのMBラインに付随させて、分割ストリームの一部に割り当てる。
 このようなストリーム分割部130によるMBラインごとの分割によって、ピクチャに含まれる、複数のMBラインにわたって配置されるスライスは分割されることになる。また、ストリーム分割部130は、N個の分割ストリームに分割するときには、N個の分割ストリームのそれぞれに跨るマクロブロック間の可変長復号処理における依存関係を除去しておく。
 N個のデコードエンジン120は、それぞれ自らが処理すべき分割ストリームを分割ストリームバッファ152から読み出し、読み出した分割ストリームを並列に復号化することによりN個の分割復号画像データを生成する。例えば、第1デコードエンジン120は第1分割ストリームを分割ストリームバッファ152から読み出し、第2デコードエンジン120は第2分割ストリームを分割ストリームバッファ152から読み出し、第3デコードエンジン120は第3分割ストリームを分割ストリームバッファ152から読み出し、第4デコードエンジン120は第4分割ストリームを分割ストリームバッファ152から読み出す。そして、第1デコードエンジン120~第4デコードエンジン120はそれぞれ第1分割ストリーム~第4分割ストリームを並列に復号化する。
 また、N個のデコードエンジン120は、分割ストリームを復号化するときには、フレームメモリ153に既に格納されている復号画像データを参照し、必要に応じて動き補償を行うことによって分割ストリームを復号化する。
 さらに、N個のデコードエンジン120のそれぞれは、分割ストリームに含まれる画面内予測により符号化されたマクロブロックを復号化するときには、その復号化対象マクロブロックの左上、上および右上にあるマクロブロックを復号化したデコードエンジン120から、それらの復号化されたマクロブロックの情報を隣接MB情報として取得する。その隣接MB情報を取得したデコードエンジン120は、その隣接MB情報を用いて、復号化対象マクロブロックを復号化する。また、デコードエンジン120は、例えばデブロッキングフィルタ処理や動きベクトル予測処理を行う場合にも、上述と同様に、処理対象のマクロブロックの左上、上および右上にある復号化されたマクロブロックの情報を隣接MB情報として取得して、上述の処理を行う。
 なお、本実施の形態では、説明を簡単にするために、以下、NをN=4として説明する。また、本実施の形態では、N(N=4)個のデコードエンジン120はそれぞれ、復号化対象のマクロブロックから見て、左、左上、上、および右上のマクロブロックの復号化が終了すると、それらの隣接MB情報を用いて、その復号化対象のマクロブロックの復号化を開始する。その結果、第1デコードエンジン120~第4デコードエンジン120はそれぞれ、各MBラインにおいて水平方向に互いに異なる位置にあるマクロブロックを並列に復号化する。
 図2Aは、ピクチャがMBAFFで構成されていない場合の復号化の順序を示す図である。
 ピクチャがMBAFFで構成されていない場合、第1デコードエンジン120は第0MBラインを復号化し、第2デコードエンジン120が第1MBラインを復号化し、第3デコードエンジン120が第2MBラインを復号化し、第4デコードエンジン120が第3MBラインを復号化する。なお、第k(kは0以上の整数)MBラインは、ピクチャの上端からk番目にあるMBラインを示し、例えば、第0MBラインは、ピクチャの上端から0番目にあるMBラインである。
 ここで、ピクチャの復号化が開始されるときには、まず、第1デコードエンジン120が第0MBラインの復号化を開始する。次に、第0MBラインの左端にある2つのマクロブロックの復号化が完了すると、第2デコードエンジン120が第1MBラインの左端のマクロブロックの復号化を開始する。そして、第1MBラインの左端にある2つのマクロブロックの復号化が完了すると、第3デコードエンジン120が第2MBラインの左端のマクロブロックの復号化を開始する。同様に、第2MBラインの左端にある2つのマクロブロックの復号化が完了すると、第4デコードエンジン120が第3MBラインの左端のマクロブロックの復号化を開始する。
 したがって、第(k+1)MBラインは、第kMBラインに比べて、2マクロブロック分だけ遅れて、左端のマクロブロックから右端のマクロブロックまで復号化される。
 図2Bは、ピクチャがMBAFFで構成されている場合の復号化の順序を示す図である。
 ピクチャがMBAFFで構成されている場合、MBラインペアは、上述のように、ピクチャの左端から右端まで水平方向に配列された複数のマクロブロックからなる列(MBライン)を2つ有する構成単位である。MBラインペアは、上下にある2つのマクロブロック(マクロブロックペア)ごとに、適応的にフレーム/フィールド符号化されている。なお、マクロブロックペアでは、まず上のマクロブロックが復号化され、次に、下のマクロブロックが復号化される。この場合にも、ピクチャがMBAFFで構成されていない場合と同様に、第1デコードエンジン120は第0MBラインペアを復号化し、第2デコードエンジン120が第1MBラインペアを復号化し、第3デコードエンジン120が第2MBラインペアを復号化し、第4デコードエンジン120が第3MBラインペアを復号化する。なお、第k(kは0以上の整数)MBラインペアは、ピクチャの上端からk番目にある2つのMBラインからなる構成単位を示し、例えば、第0MBラインは、ピクチャの上端から0番目にある2つのMBラインからなる構成単位である。
 ここで、ピクチャの復号化が開始されるときには、まず、第1デコードエンジン120が第0MBラインペアの復号化を開始する。次に、第0MBラインペアの左端にある2つのマクロブロックペアの復号化が完了すると、第2デコードエンジン120が第1MBラインペアの左上端のマクロブロックの復号化を開始する。そして、第1MBラインペアの左端にある2つのマクロブロックペアの復号化が完了すると、第3デコードエンジン120が第2MBラインペアの左上端のマクロブロックの復号化を開始する。同様に、第2MBラインペアの左端にある2つのマクロブロックペアの復号化が完了すると、第4デコードエンジン120が第3MBラインペアの左上端のマクロブロックの復号化を開始する。
 したがって、第(k+1)MBラインペアは、第kMBラインペアに比べて、2マクロブロックペア分だけ遅れて、左端のマクロブロックペアから右端のマクロブロックペアまで復号化される。
 なお、ピクチャがMBAFFで構成されていない場合、および、ピクチャがMBAFFで構成されている場合のそれぞれにおいて、第(k+1)MBラインまたは第(k+1)MBラインペアは、第kMBラインまたは第kMBラインペアに比べて、少なくとも2マクロブロック分または2マクロブロックペア分だけ遅れて復号化されればよい。つまり、3マクロブロック分または3マクロブロックペア分以上遅れて復号化されてもよい。例えば、第(k+1)MBラインまたは第(k+1)MBラインペアが、第kMBラインまたは第kMBラインペアに比べて、2マクロブロック分または2マクロブロックペア分だけ遅れて復号化される場合には、ピクチャの復号化にかかる時間を最短にすることができ、3マクロブロック分または3マクロブロックペア分以上遅れて復号化される場合には、その遅れる分量に応じてピクチャの復号化にかかる時間が長くなる。
 このような本実施の形態における画像復号化装置100の特徴は、ストリーム分割部130による分割によって生成された、スライスの1つまたは複数の部分(スライス部分)からなるスライス部分群を1つの新たなスライスとして再構成することである。スライスの再構成は、スライスヘッダの挿入処理、スライス終端処理、MBアドレス情報の更新処理、スキップラン修正処理、およびQPデルタ設定処理を含む。また、QPデルタ設定処理は、QPデルタ修正処理およびQPデルタ挿入処理を含む。なお、本実施の形態では、QPデルタ設定処理がQPデルタ修正処理である場合について説明する。
 図3は、スライスヘッダの挿入処理を説明するための説明図である。
 例えば、ストリーム分割部130は、図3の(a)に示すピクチャp1を分割する。
 ピクチャp1は、スライスA、スライスBおよびスライスCから構成されているとともに、MBラインL1~L12から構成されている。
 スライスAは、MBラインL1~L7にわたって配置され、スライスヘッダhaと、そのスライスヘッダhaから連続して配置されている複数のマクロブロックmbaとを有する。スライスBは、MBラインL7~L8にわたって配置され、スライスヘッダhbと、そのスライスヘッダhbから連続して配置されている複数のマクロブロックmbbとを有する。スライスCは、MBラインL9~L12にわたって配置され、スライスヘッダhcと、そのスライスヘッダhcから連続して配置されている複数のマクロブロックmbcとを有する。なお、スライスヘッダには、そのスライスヘッダを有するスライスの復号化に必要な補助情報が含まれている。
 ストリーム分割部130は、図3の(b)に示すように、上述のピクチャp1をMBラインごとに分割する。そして、ストリーム分割部130は、MBラインL1~L12のそれぞれを先頭から順に、第1分割ストリーム~第4分割ストリームの何れかの一部に割り当てる。例えば、ストリーム分割部130は、MBラインL1を第1分割ストリームの一部に割り当て、MBラインL2を第2分割ストリームの一部に割り当て、MBラインL3を第3分割ストリームの一部に割り当て、MBラインL4を第4分割ストリームの一部に割り当てる。そして、ストリーム分割部130は、第4分割ストリームへのMBラインの割り当てが終了すると、第1分割ストリームへのMBラインの割り当てを繰り返す。つまり、ストリーム分割部130は、MBラインL5を第1分割ストリームの一部に割り当て、MBラインL6を第2分割ストリームの一部に割り当て、MBラインL7を第3分割ストリームの一部に割り当て、MBラインL8を第4分割ストリームの一部に割り当てる。
 その結果、第1分割ストリームは連続するMBラインL1、L5、L9を含み、第2分割ストリームは連続するMBラインL2、L6、L10を含み、第3分割ストリームは連続するMBラインL3、L7、L11を含み、第4分割ストリームは連続するMBラインL4、L8、L12を含む。
 なお、MBラインL1~L6と、MBラインL7の先頭側の6マクロブロックからなる集合と、MBラインL7の終端側の10マクロブロックからなる集合と、MBラインL8~L12とは、それぞれスライスA~Cの一部を構成するスライス部分である。そして、第1分割ストリームでは、スライスAのスライス部分であるMBラインL1、L5からスライス部分群(第1分割ストリームにおけるスライスA)が構成される。また、第2分割ストリームでは、スライスBのスライス部分であるMBラインL2、L6からスライス部分群(第2分割ストリームにおけるスライスB)が構成される。
 ここで、単純にMBラインを分割ストリームに割り当てるだけでは、分割ストリームに含まれるスライスを適切にデコードエンジン120に認識させることができない場合がある。
 例えば、第1分割ストリームには、上述のように連続するMBラインL1、L5、L9が含まれている。この場合、MBラインL1、L5はスライスAとして認識されるべきであり、MBラインL9はスライスCとして認識されるべきである。そのためには、第1分割ストリームにおいてスライスAの先頭となるべきMBラインL1の先頭にスライスAのスライスヘッダhaが配置されている必要があり、第1分割ストリームにおいてスライスCの先頭となるべきMBラインL9の先頭にスライスCのスライスヘッダhcが配置されている必要がある。図3に示す例では、スライスヘッダha、hcがそれぞれMBラインL1、L9の先頭に予め配されているため、ストリーム分割部130はMBラインL1、L5、L9をスライスヘッダha、hcとともに第1分割ストリームに割り当てればよい。
 一方、第2分割ストリームには、上述のように連続するMBラインL2、L6、L10が含まれている。この場合、MBラインL2、L6はスライスAとして認識されるべきであり、MBラインL10はスライスCとして認識されるべきである。そのためには、第2分割ストリームにおいてスライスAの先頭となるべきMBラインL2の先頭にスライスAのスライスヘッダhaが配置されている必要があり、第2分割ストリームにおいてスライスCの先頭となるべきMBラインL10の先頭にスライスCのスライスヘッダhcが配置されている必要がある。
 そこで、本実施の形態におけるストリーム分割部130は、MBラインを分割ストリームの一部に割り当てるときには、必要に応じてスライスヘッダha、hb、hcを複製することにより複製スライスヘッダha’、hb’、hc’を生成し、それらを分割ストリームに挿入する。
 例えば、ストリーム分割部130は、スライスヘッダhaを複製することにより3つの複製スライスヘッダha’を生成し、その複製スライスヘッダha’をMBラインL2、L3、L4の直前に挿入する。さらに、ストリーム分割部130は、スライスヘッダhbを複製することにより1つの複製スライスヘッダhb’を生成し、その複製スライスヘッダhb’をMBラインL8の直前に挿入する。さらに、ストリーム分割部130は、スライスヘッダhcを複製することにより3つの複製スライスヘッダhc’を生成し、その複製スライスヘッダhc’をMBラインL10、L11、L12の直前に挿入する。
 その結果、第2分割ストリームでは、スライスAの先頭となるMBラインL2の直前に、スライスAのスライスヘッダhaの複製である複製スライスヘッダha’が配置され、スライスCの先頭となるMBラインL10の直前に、スライスCのスライスヘッダhcの複製である複製スライスヘッダhc’が配置される。これにより、第2デコードエンジン120は、複製スライスヘッダha’、hc’から、第2分割ストリームのスライスAおよびスライスCのそれぞれの復号化に必要なパラメータを得ることができる。
 次に、MBアドレス情報の更新処理について説明する。
 ストリーム分割部130は、上述のように複製スライスヘッダを分割ストリームに挿入するときには、挿入される位置に応じて、複製スライスヘッダに含まれているMBアドレス情報を更新する。
 つまり、符号化ストリームに含まれるピクチャを構成する各スライスのスライスヘッダには、そのスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを特定するためのMBアドレス情報“first_mb_in_slice”が含まれている。したがって、このようなスライスヘッダが複製されることによって生成された複製スライスヘッダには、当初、複製元のスライスヘッダのMBアドレス情報と同一のMBアドレス情報が含まれている。その結果、このような複製スライスヘッダが、ピクチャ内において複製元のスライスヘッダと異なる位置に挿入されれば、その複製スライスヘッダのMBアドレス情報により特定されるアドレスは、誤ったアドレスを指し示していることになる。つまり、複製スライスヘッダのMBアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックの上記ピクチャ内におけるアドレスを指し示さず、複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを指し示している。
 例えば、ピクチャp1のスライスAのスライスヘッダhaには、そのスライスAの先頭マクロブロック(MBラインL1の先頭マクロブロック)のピクチャp1内におけるアドレスを示すMBアドレス情報が含まれている。このようなスライスヘッダhaが複製されることによって生成された複製スライスヘッダha’には、当初、MBラインL1の先頭マクロブロックのピクチャp1内におけるアドレスを特定するためのMBアドレス情報が含まれている。その結果、このような複製スライスヘッダha’が、MBラインL2の直前に挿入されれば、その複製スライスヘッダha’のMBアドレス情報により特定されるアドレスは、第2分割ストリームにおいてその複製スライスヘッダha’を有するスライスAの先頭マクロブロック(MBラインL2の先頭マクロブロック)のピクチャp1内におけるアドレスを指し示さず、MBラインL1の先頭マクロブロックのアドレスを指し示している。
 そこで、本実施の形態におけるストリーム分割部130は、上述のように、複製スライスヘッダに含まれているMBアドレス情報を更新する。
 図4は、MBアドレス情報の更新処理を説明するための説明図である。
 ストリーム分割部130は、まず、符号化ストリームに含まれているSPS(シーケンスパラメータセット)から、ピクチャの水平方向のマクロブロックの数に関連する情報である“pic_width_in_mbs_minus1”を取得する。
 さらに、ストリーム分割部130は、複製元のスライスヘッダに含まれるMBアドレス情報“first_mb_in_slice”を用いて、その複製元のスライスヘッダを有するスライスの先頭マクロブロックのアドレスを算出する。
 次に、ストリーム分割部130は、算出された先頭マクロブロックのアドレスに基づいて、その先頭マクロブロックがピクチャ内において何行目のMBラインにあるかを示す値“mbposv”を算出する。なお、値“mbposv”は0以上の整数である。
 そして、ストリーム分割部130は、直前に複製スライスヘッダが挿入されるMBラインが、複製元のスライスヘッダが配置されているMBラインから見てn行離れているときには、複製スライスヘッダのMBアドレス情報を“first_mb_in_slice[n]”=(“mbposv”+n)×(“pic_width_in_mbs_minus1”+1)により算出する。
 なお、ピクチャがMBAFF(マクロブロックアダプティブフレームフィールド)で構成されている場合には、ストリーム分割部130は、複製スライスヘッダのMBアドレス情報を“first_mb_in_slice[n]”=(“mbposv”/2+n)×(“pic_width_in_mbs_minus1”+1)により算出する。
 ストリーム分割部130は、複製スライスヘッダに当初含まれているMBアドレス情報を、上述のように算出されたMBアドレス情報に更新する。これにより、複製スライスヘッダのMBアドレス情報により特定されるアドレスは、分割ストリームにおいてその複製スライスヘッダを有するスライスの先頭マクロブロックのピクチャ内におけるアドレスを正しく指し示す。
 次に、スライス終端処理について説明する。
 符号化ストリームに含まれるピクチャを構成する各スライスの終端には、そのスライスの終端であることを示すスライス終端情報が設定されている。したがって、図3に示すように、単純に、ピクチャが複数のMBラインに分割され、その複数のMBラインがそれぞれ第1分割ストリーム~第4分割ストリームの何れかの一部に割り当てられる場合には、分割ストリームに含まれるスライスの終端を適切にデコードエンジン120に認識させることができない場合がある。
 そこで、本実施の形態におけるストリーム分割部130は、スライスヘッダの挿入処理と同様に、スライス終端処理も実行する。
 図5は、スライス終端処理を説明するための説明図である。
 例えば、図5の(a)に示すように、符号化ストリームのピクチャp1に含まれるスライスCは、スライスヘッダhcと、MBラインL9~L12と、スライス終端情報ecとを含んでいる。
 ストリーム分割部130はピクチャp1をMBラインごとに分割する。その結果、図5の(b)~(e)に示すように、MBラインL9はスライスヘッダhcと共に第1分割ストリームに割り当てられ、MBラインL10は第2分割ストリームに割り当てられ、MBラインL11は第3分割ストリームに割り当てられ、MBラインL12は第4分割ストリームに割り当てられる。
 さらに、ストリーム分割部130は、上述のスライスヘッダの挿入処理により、スライスヘッダhcを複製して3つの複製スライスヘッダhc’を生成し、それらの3つの複製スライスヘッダhc’をそれぞれ、第2分割ストリーム~第4分割ストリームのMBラインL10、L11、L12の直前に挿入する。また、ストリーム分割部130は、上述のMBアドレス情報の更新処理により、挿入される複製スライスヘッダhc’の位置に応じて、その複製スライスヘッダhc’に含まれるMBアドレス情報を更新する。
 ここで、ストリーム分割部130は、スライス終端処理として、第1分割ストリームにおけるスライスC(MBラインL9)の終端、第2分割ストリームにおけるスライスC(MBラインL10)の終端、第3分割ストリームにおけるスライスC(MBラインL11)の終端、および第4分割ストリームにおけるスライスC(MBラインL12)の終端を示すスライス終端情報ec’を生成する。そして、ストリーム分割部130は、その生成されたスライス終端情報ec’を、第1分割ストリーム~第4分割ストリームのMBラインL9、L10、L11、L12の直後に設定する。なお、ストリーム分割部130は、符号化ストリームをMBラインごとに分割するときには、その符号化ストリームに元々含まれているスライス終端情報ecを破棄している。また、スライス終端情報ecとスライス終端情報ecとが同一の情報であれば、最終的には、MBラインL12はスライス終端情報ec’(ec)と共に第4分割ストリームに割り当てられることになる。
 これにより、各デコードエンジン120は、分割ストリームに含まれるスライスの終端を適切に認識することができる。
 図6は、本実施の形態における画像復号化装置100の全体的な動きを示すフローチャートである。
 まず、画像復号化装置100は、符号化ストリームを取得し(ステップS10)、その符号化ストリームから処理対象となる符号化されたピクチャを特定する(ステップS12)。さらに、画像復号化装置100は、処理対象のピクチャを分割することにより1つのMBラインを抽出する(ステップS14)。なお、MBラインの直前またはそのMBラインに属する2つのマクロブロック間にスライスヘッダがあれば、そのMBラインはそのスライスヘッダと共に抽出される。
 次に、画像復号化装置100は、ステップS14の分割によって抽出された1つのMBラインを、生成対象となる第1~第N分割ストリームの何れかに割り当てる前に、スライス再構成処理をする必要があるか否か(そのMBラインの直前にスライスヘッダを挿入する必要があるか否か、既に割り当てられているMBラインの直後にスライス終端情報を設定する必要があるか否か、MBスキップラン情報を修正する必要があるか否か、および、QP変化量を設定する必要があるか否か)を判別する(ステップS16)。
 画像復号化装置100は、ステップS16で、スライス再構成処理をする必要があると判別したときには(ステップS16のYes)、スライス再構成処理を実行する(ステップS18)。つまり、画像復号化装置100は、上述のスライスヘッダの挿入処理、スライス終端処理、スキップラン修正処理およびQPデルタ設定処理の少なくとも1つを実行する。また、画像復号化装置100は、スライスヘッダの挿入処理を実行するときには、MBアドレス情報の更新処理も実行する。
 そして、画像復号化装置100は、そのMBラインを生成対象となる第1~第N分割ストリームの何れかに割り当てる(ステップS20)。このステップS20が繰り返し行われることによって、第1~第N分割ストリームのそれぞれにMBラインが順次割り当てられ、第1~第N分割ストリームが生成される。
 画像復号化装置100は、第1~第N分割ストリームのそれぞれに割り当てられたMBラインを並列に復号化する(ステップS22)。なお、第1~第N分割ストリームのうちの何れかの分割ストリームにMBラインが割り当てられていない場合には、画像復号化装置100は、そのMBラインが割り当てられていない分割ストリームを除く、残りの分割ストリームを復号化する。
 次に、画像復号化装置100は、ピクチャに含まれる全てのMBラインを割り当てたか否かを判別し(ステップS24)、割り当てていないと判別したときには(ステップS24のNo)、ステップS14からの処理を繰り返し実行する。一方、画像復号化装置100は、全てのMBラインを割り当てたと判別したときには(ステップS24のYes)、さらに、符号化ストリームに含まれる全てのピクチャを分割したか否かを判別する(ステップS26)。ここで、画像復号化装置100は、全てのピクチャを分割していないと判別したときには(ステップS26のNo)、ステップS12からの処理を繰り返し実行し、全てのピクチャを分割したと判別したときには(ステップS26のYes)、復号化処理を終了する。
 なお、図6のフローチャートに示される処理動作は、本発明の画像復号化装置100の処理動作の一例であって、本発明は、このフローチャートに示される処理動作に限定されない。
 例えば、図6のフローチャートでは、画像復号化装置100のストリーム分割部130が、ステップS18のスライス再構成処理で、スライスヘッダの挿入処理を行うが、スライスヘッダの挿入処理を行うことなく、スライスヘッダを必要とするデコードエンジン120に複製スライスヘッダを直接渡してもよい。また、図6のフローチャートでは、ストリーム分割部130が、ステップS18のスライス再構成処理で、MBアドレス情報の更新処理を行うが、その更新処理を行わなくてもよい。この場合、例えば、デコードエンジン120が、分割ストリームに含まれている複製スライスヘッダのMBアドレス情報を更新する。また、図6のフローチャートでは、ストリーム分割部130が、ステップS18のスライス再構成処理で、スライス終端処理を行うが、そのスライス再構成処理で行わなくてもよい。この場合、例えば、ステップS20でMBラインが第1~第N分割ストリームの何れかに割り当てられた後であって、次の新たなMBラインがストリーム分割部130からその何れかの分割ストリームに割り当てられる直前に、既に割り当てられているMBラインに対してスライス終端処理が行われてもよい。
 ここで、ストリーム分割部130の構成および動作について詳細に説明する。
 図7は、ストリーム分割部130の構成を示すブロック図である。
 ストリーム分割部130は、スタートコード検出部131、EPB除去部132a、EPB挿入部132b、スライスヘッダ挿入部133、およびスライスデータ処理部134a、134bを備えている。
 スタートコード検出部131は、ストリームバッファ151から符号化ストリームを読み出して、NALユニットごとにスタートコードを検出する。
 EPB除去部132aは、EPB(エミュレーション防止バイト)を符号化ストリームから除去し、EPBが除去された符号化ストリームをスライスデータ処理部134a、134bに出力する。さらに、EPB除去部132aは、符号化ストリームに含まれているSPS(シーケンスパラメータセット)およびPPS(ピクチャパラメータセット)などのスライスより上層の情報を取得し、その情報が4つの分割ストリームのそれぞれに挿入されるように、その情報をEPB挿入部132bに出力する。
 EPB挿入部132bは、符号化ストリームが分割されることによって生成される分割ストリームに、EPB除去部132aによって除去されたEPBを挿入する。
 スライスヘッダ挿入部133は、上述のスライスヘッダの挿入処理およびMBアドレス情報の更新処理を実行する。なお、スライスヘッダ挿入部133は、所定のタイミングで、スライスヘッダの挿入処理をするか否かを示すスライスヘッダ処理内容通知M1をスライスデータ処理部134a、134bに送り、スライスデータ処理部134a、134bから終端処理完了通知M2を受けたときに、スライスヘッダの挿入処理を実行する。そして、スライスヘッダ挿入部133は、スライスヘッダの挿入処理によって、MBラインの直前にあるスライスヘッダと、MBアドレス情報が更新された複製スライスヘッダとをEPB挿入部132bに出力する。
 スライスデータ処理部134a、134bは、EPBが除去された符号化ストリームを分割することにより4つの分割ストリームを生成し、その4つの分割ストリームを出力する。なお、スライスデータ処理部134a、134bから出力される分割ストリームには、上述のMBラインの直前またはその中にあるスライスヘッダおよび複製スライスヘッダが含まれていない。ここで、スライスデータ処理部134aは、CAVLD(Context-Adaptive Variable Length Decoding)に応じた処理を実行し、CAVLC(Context-Adaptive Variable Length Coding)によって生成された符号化ストリームを4つの分割ストリームに分割する。また、スライスデータ処理部134bは、CABAD(Context-Adaptive Binary Arithmetic Decoding)に応じた処理を実行し、CABAC(Context-Adaptive Binary Arithmetic Coding)によって生成された符号化ストリームを4つの分割ストリームに分割する。
 スライスデータ処理部134aは、スライスデータ層デコード部135a、マクロブロック層デコード部136a、スキップラン修正部137a、QPデルタ修正部138aおよび分割点検出部139aを備えている。
 スライスデータ層デコード部135aは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化する。マクロブロック層デコード部136aは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化する。このような、スライスデータ層デコード部135aおよびマクロブロック層デコード部136aによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。なお、スライスデータ層デコード部135aおよびマクロブロック層デコード部136aは、処理対象のマクロブロックに隣接するマクロブロックに依存する情報(具体的には、CAVLCのnC(non-zero coefficient)など)のみを復号化してもよい。
 スキップラン修正部137aは、スライスデータ層デコード部135aによって復号化されたMBスキップラン情報“mb_skip_run”を修正し、修正されたMBスキップラン情報を再び符号化し、符号化されたMBスキップラン情報を出力する。すなわち、スキップラン修正部137aは、MBスキップラン情報が、符号化ストリームにおいて連続する少なくとも2つのスライス部分に跨って連続するブロックの個数を示すときには、その連続するブロックの個数を分割し、スライス部分ごとのブロックの個数を示すように修正したMBスキップラン情報を、少なくとも2つの連続するスライス部分がそれぞれ割り当てられる分割ストリームに設定する。さらに、スキップラン修正部137aは、各分割ストリームにおいて、設定される複数のMBスキップラン情報に対応する複数のブロックが当該分割ストリーム内で連続するときには、複数のMBスキップラン情報を、その複数のMBスキップラン情報のそれぞれが示す個数の総和を示す1つのMBスキップラン情報に変換する。
 ここで、MBスキップラン情報は、符号化ピクチャに含まれるスライス内で特定の種類のブロックが連続する場合に連続する当該ブロックの個数を示す第1の符号語の一例である。具体的には、MBスキップラン情報は、連続してスキップされるマクロブロックの数を示している。
 例えば、符号化ストリームのスライスの中で、連続してスキップされるマクロブロックの集合が複数のMBラインに跨って存在する場合、スライスデータ層デコード部135aによって復号化されたMBスキップラン情報は、その集合に含まれる連続してスキップされるマクロブロックの数を示している。このような場合に、ピクチャがMBラインごとに分割され、それらのMBラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、MBスキップラン情報による、MBライン間の依存関係が崩れてしまう。
 そこで、スキップラン修正部137aは、上述の集合の一部を含むMBラインごとに、そのMBラインに含まれている上記一部を成す、連続してスキップされるマクロブロックの数を特定する。そして、スキップラン修正部137aは、MBラインごとに、MBスキップラン情報により示される数が、そのMBラインに対して特定された数となるように、MBスキップラン情報を修正する。
 QPデルタ修正部138aは、マクロブロックごとに、マクロブロック層デコード部136aによって復号化された、そのマクロブロックのQP変化量“mb_qp_delta”を修正し、修正されたQP変化量を再び符号化し、符号化されたQP変化量を出力する。すなわち、QPデルタ修正部138aは、QP変化量が、2つのMBラインに跨るブロック間の変化量を示す場合には、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する。そしてQPデルタ修正部138aは、計算した変化量にQP変化量を修正する。
 なお、QP変化量は、符号化ピクチャに含まれるスライス内で連続するブロック間における符号化係数の変化量を示す第2の符号語の一例である。具体的には、QP変化量は、マクロブロック(対象マクロブロック)に含まれており、その対象マクロブロックのQP値と、その対象マクロブロックの直前に位置するマクロブロックのQP値との差分値を示す。
 つまり、ピクチャがMBラインごとに分割され、MBラインのそれぞれが複数の分割ストリームの何れかに割り当てられると、MBラインの境界を挟んで互いに連続していたマクロブロックはそれぞれ別々の分割ストリームに割り当てられる。その結果、その互いに連続していた一方のマクロブロック(対象マクロブロック)を含む分割ストリームを復号化の対象とするデコードエンジン120は、対象マクロブロックのQP変化量から、その対象マクロブロックのQP値を導出することができない。つまり、QP変化量による、MBライン間の依存関係が崩れてしまう。
 そこで、QPデルタ修正部138aは、マクロブロックごとに、そのマクロブロック(対象マクロブロック)のQP変化量を、分割ストリームにおける新たなマクロブロックの前後関係に基づいて再計算する。
 分割点検出部139aは、符号化ストリームを4つの分割ストリームに分割する。つまり、分割点検出部139aは、ピクチャを複数のMBラインに分割し、MBラインのそれぞれを4つの分割ストリームの何れかに割り当てる。なお、分割点検出部139aは、MBラインの直前またはそのMBラインに属する2つのマクロブロック間にスライスヘッダがある場合には、そのスライスヘッダの割り当てを行うことなく、MBラインだけを分割ストリームに割り当てる。また、分割点検出部139aは、分割ストリームのそれぞれに、スキップラン修正部137aから取得したMBスキップラン情報と、QPデルタ修正部138aから取得したQP変化量とを含める。
 さらに、分割点検出部139aは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部133からスライスヘッダ処理内容通知M1を受けると、そのスライスヘッダ処理内容通知M1の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部139aは、スライス終端処理が完了すると、スライスヘッダ挿入部133に終端処理完了通知M2を送る。
 スライスデータ処理部134bは、スライスデータ層デコード部135b、マクロブロック層デコード部136b、QPデルタ修正部138bおよび分割点検出部139bを備えている。
 スライスデータ層デコード部135bは、符号化ストリームに含まれるスライスデータ層の符号化データを可変長復号化(算術復号化)する。マクロブロック層デコード部136bは、符号化ストリームに含まれるマクロブロック層の符号化データを可変長復号化(算術復号化)する。このような、スライスデータ層デコード部135bおよびマクロブロック層デコード部136bによる可変長復号化により、隣接するマクロブロック間の依存関係が除去される。
 QPデルタ修正部138bは、上述のQPデルタ修正部138aと同様、マクロブロックごとに、マクロブロック層デコード部136bによって復号化された、そのマクロブロックのQP変化量“mb_qp_delta”を修正し、修正されたQP変化量を再び符号化し、符号化されたQP変化量を出力する。
 分割点検出部139bは、分割点検出部139aと同様、符号化ストリームを4つの分割ストリームに分割する。このとき、分割点検出部139bは、分割ストリームのそれぞれに、QPデルタ修正部138bから取得したQP変化量を含める。さらに、分割点検出部139bは、分割ストリームのスライスの終端を検出し、スライスヘッダ挿入部133からのスライスヘッダ処理内容通知M1を受けると、そのスライスヘッダ処理内容通知M1の示す内容に応じて、上述のスライス終端処理を実行する。また、分割点検出部139bは、スライス終端処理が完了すると、スライスヘッダ挿入部133に終端処理完了通知M2を送る。
 ここで、スライスヘッダ挿入部133およびスライスデータ処理部134a、134bについて詳細に説明する。なお、スライスデータ処理部134a、134bについて共通する機能および処理動作を説明するときには、それらを区別することなくスライスデータ処理部134と総称する。
 まず、スライスヘッダ挿入部133がスライスヘッダを挿入するタイミング、およびスライスデータ処理部134がスライス終端情報を挿入するタイミングについて説明する。
 図8は、スライスヘッダ挿入部133およびスライスデータ処理部134の動作を説明するための説明図である。
 スライスデータ処理部134は、スライスAおよびスライスBを含むピクチャをMBラインごとに分割し、EPB挿入部132bを介して、先頭側のMBラインから各MBラインを順次、分割ストリームバッファ152に含まれる4つの領域(第1領域df1~第4領域df4)に格納する。このとき、スライスデータ処理部134は、1MBラインの格納ごとに、MBラインの格納先を第1領域df1、第2領域df2、第3領域df3、第4領域df4、第1領域df1の順に繰り返し変更する。
 例えば、スライスデータ処理部134は、図8の(a)に示すように、スライスAのMBラインLa1を、分割ストリームバッファ152の第1領域df1に格納し、スライスAの次のMBラインLa2を、分割ストリームバッファ152の第2領域df2に格納し、スライスAの次のMBラインLa3を、分割ストリームバッファ152の第3領域df3に格納する。さらに、スライスデータ処理部134は、スライスAの次のスライスBのMBラインLb1を、分割ストリームバッファ152の第4領域df4に格納する。
 その結果、分割ストリームバッファ152の4つの第1領域df1~第4領域df4のそれぞれにMBラインが格納され、分割ストリームバッファ152は、スライスBの次のMBラインが再び第1領域df1に格納される直前の状態になる。
 なお、スライスデータ処理部134は、MBラインLa3を第3領域df3に格納するときには、符号化ストリームにおいてMBラインLa3の直後にスライス終端情報eaがあっても、そのスライス終端情報eaを格納することなく、MBラインLa3だけを第3領域df3に格納する。そして、スライスデータ処理部134は、その後に、第3領域df3に新たなスライスに属するMBラインを格納するときになって、そのスライス終端情報eaに対応するスライス終端情報ea’を第3領域df3に格納する。また、スライスデータ処理部134がMBラインLb1を第4領域df4に格納するときには、事前に、スライスヘッダ挿入部133によってスライスBのスライスヘッダhbが第4領域df4に格納されている。また、ピクチャには、スライスAのMBラインLa1よりも前に、そのスライスAの他のMBラインが存在している。したがって、第1領域df1、第2領域df2および第3領域df3のMBラインLa1、La2、La3の直前には、スライスAの複製スライスヘッダが挿入されていない。
 また、スライスデータ処理部134の分割点検出部139a、139bは、マクロブロックを出力するごとに、1MBラインの全てのマクロブロックが出力されたか否かを判別している。その結果、分割点検出部139a、139bは、全てのマクロブロックが出力されたと判別すると、MBラインの境界(MBラインの終端)を検出する。そして、分割点検出部139a、139bは、MBラインの境界を検出するごとに、マクロブロックの出力処理を中断し、MBラインの境界を検出したことをスライスヘッダ挿入部133に通知する。
 したがって、MBラインの最後のマクロブロックが分割ストリームバッファ152に格納されて、分割ストリームバッファ152が上述のような図8の(a)に示す状態になったときにも、スライスヘッダ挿入部133は、スライスデータ処理部134の分割点検出部139a、139bから、MBラインの境界が検出されたことの通知を受ける。
 MBラインの境界検出の通知を受けたスライスヘッダ挿入部133は、図8の(b)に示すように、スライスヘッダ処理内容通知M1をスライスデータ処理部134に送る。このスライスヘッダ処理内容通知M1は、スライスデータ処理部134から分割ストリームバッファ152へ次のMBラインが格納される直前に、スライスヘッダを分割ストリームバッファ152に出力して格納する予定があるか否かをそのスライスデータ処理部134に知らせる情報であって、「出力」または「非出力」を示す。つまり、「出力」を示すスライスヘッダ処理内容通知M1は、スライスデータ処理部134に対してスライス終端処理を促す通知である。
 例えば、スライスヘッダ挿入部133は、スライスデータ処理部134から分割ストリームバッファ152へ次のMBラインLb2が格納される直前に、複製スライスヘッダhb’を分割ストリームバッファ152に出力して格納すべきと判断する。このとき、スライスヘッダ挿入部133は、「出力」を示すスライスヘッダ処理内容通知M1をスライスデータ処理部134に出力する。
 スライスデータ処理部134は、スライスヘッダ処理内容通知M1を取得すると、そのスライスヘッダ処理内容通知M1が「出力」を示していれば、スライス終端情報を生成して分割ストリームバッファ152に格納した後に、終端処理完了通知M2をスライスヘッダ挿入部133に出力する。一方、スライスデータ処理部134は、スライスヘッダ処理内容通知M1が「非出力」を示していれば、スライス終端情報を分割ストリームバッファ152に格納することなく、終端処理完了通知M2をスライスヘッダ挿入部133に出力する。
 例えば、スライスデータ処理部134は、「出力」を示すスライスヘッダ処理内容通知M1を取得すると、図8の(c)に示すように、スライス終端情報ea’を生成し、分割ストリームバッファ152の第1領域df1に格納する。その格納が完了すると、スライスデータ処理部134は、終端処理完了通知M2をスライスヘッダ挿入部133に出力する。
 スライスヘッダ挿入部133は、スライスデータ処理部134から終端処理完了通知M2を取得すると、直前に出力したスライスヘッダ処理内容通知M1が「出力」を示していた場合には、EPB挿入部132bを介して、スライスヘッダを分割ストリームバッファ152に出力して格納し、その後、スライスヘッダ処理完了通知M3をスライスデータ処理部134に出力する。一方、直前に出力したスライスヘッダ処理内容通知M1が「非出力」を示していた場合には、スライスヘッダ挿入部133は、スライスヘッダを分割ストリームバッファ152に格納することなく、スライスヘッダ処理完了通知M3をスライスデータ処理部134に出力する。
 例えば、スライスヘッダ挿入部133は、直前に出力したスライスヘッダ処理内容通知M1が「出力」を示していた場合に、スライスデータ処理部134から終端処理完了通知M2を取得すると、図8の(d)に示すように、複製スライスヘッダhb’を生成して分割ストリームバッファ152の第1領域df1に格納する。その後、スライスヘッダ挿入部133は、スライスヘッダ処理完了通知M3をスライスデータ処理部134に出力する。
 スライスデータ処理部134の分割点検出部139a、139bは、スライスヘッダ挿入部133からスライスヘッダ処理完了通知M3を受けると、中断していたマクロブロックの出力処理を再開し、次のMBラインを出力して分割ストリームバッファ152に格納する。
 例えば、スライスデータ処理部134は、図8の(d)に示すように、次のMBラインLb2を出力して分割ストリームバッファ152の第1領域df1に格納する。
 このようなスライスヘッダ挿入部133およびスライスデータ処理部134による処理によって、分割ストリームバッファ152の各領域において、スライス終端情報、スライスヘッダ、次のMBラインの順に、これらのデータを適切なMBラインの境界に書き込むことができる。
 図9は、スライスヘッダ挿入部133の構成を示すブロック図である。
 なお、図9を用いて、分割点検出部139a、139bについて共通する機能および処理動作を説明するときには、それらを区別することなく分割点検出部139と総称する。
 スライスヘッダ挿入部133は、NALタイプ判定部133a、ヘッダ挿入カウンタ133b、ヘッダアドレス更新部133cおよびヘッダバッファ133dを備えている。
 NALタイプ判定部133aは、符号化ストリームのNALユニットを取得するごとに、そのNALユニットのタイプがスライスであるか否かを判別する。そして、NALタイプ判定部133aは、スライスであると判別したときには、そのNALユニットのタイプがスライスであることをヘッダバッファ133dおよびヘッダ挿入カウンタ133bに通知する。
 ヘッダバッファ133dは、NALタイプ判定部133aからの通知を受けると、その通知に対応するNALユニットにスライスヘッダが含まれていれば、そのNALユニットからスライスヘッダを取り出して記憶する。さらに、ヘッダバッファ133dは、後のNALユニットに新たなスライスヘッダが含まれていれば、既に記憶しているスライスヘッダをその新たなスライスヘッダに置き換える。つまり、ヘッダバッファ133dは、常に最新のスライスヘッダを保持している。
 ヘッダ挿入カウンタ133bは、複製スライスヘッダを生成して挿入するタイミングを特定するために、符号化ストリーム中のMBラインの境界(終端)が分割点検出部139で検出された数をカウントする。具体的には、ヘッダ挿入カウンタ133bは、0~4(デコードエンジン120の総数)までの値をカウントする。ヘッダ挿入カウンタ133bは、NALタイプ判定部133aからの通知を受けると、その通知に対応するNALユニットにスライスヘッダが含まれていれば、カウント値を0にリセットする。さらに、ヘッダ挿入カウンタ133bは、MBラインの境界(MBラインの終端)が検出されたときには、カウント値を1だけカウントアップする。そして、ヘッダ挿入カウンタ133bは、カウント値が4に達した後に、さらにMBラインの境界が検出されたときには、カウントアップすることなく、カウント値を4に維持しておく。
 このように、ヘッダ挿入カウンタ133bは、MBラインの境界が検出されたときには、カウント値を更新あるいは保持し、NALユニットにスライスヘッダが含まれていれば、カウント値を0にリセットする。
 また、ヘッダ挿入カウンタ133bは、MBラインの境界が検出されたときには、その検出によって更新されたカウント値(MBライン境界の直後のスライスヘッダによってリセットされたカウント値=0を含む)に応じて、「出力」または「非出力」を示すスライスヘッダ処理内容通知M1を分割点検出部139に出力する。具体的には、ヘッダ挿入カウンタ133bは、MBラインの境界が検出された直後のカウント値が0~3のときには、「出力」を示すスライスヘッダ処理内容通知M1を出力し、そのカウント値が4のときには、「非出力」を示すスライスヘッダ処理内容通知M1を出力する。また、ヘッダ挿入カウンタ133bは、MBラインの境界が検出されたときに限らず、カウント値が0になったときにも、「出力」を示すスライスヘッダ処理内容通知M1を出力する。
 さらに、ヘッダ挿入カウンタ133bは、スライスヘッダ処理内容通知M1を分割点検出部139に出力した後に、その分割点検出部139から終端処理完了通知M2を受け取ると、その出力したスライスヘッダ処理内容通知M1が「出力」を示していた場合には、ヘッダバッファ133dに格納されているスライスヘッダをそのヘッダバッファ133dから出力させる。その後、ヘッダ挿入カウンタ133bはスライスヘッダ処理完了通知M3を分割点検出部139に出力する。なお、ヘッダバッファ133dからスライスヘッダが出力されるときには、スライスヘッダ挿入部133は、そのスライスヘッダに含まれているMBアドレス情報により示される値に応じて、分割ストリームバッファ152の格納先となる領域を選択する。そして、スライスヘッダ挿入部133は、その選択された格納先となる領域にスライスヘッダを格納する。一方、ヘッダ挿入カウンタ133bは、その出力したスライスヘッダ処理内容通知M1が「非出力」を示していた場合には、ヘッダバッファ133dに格納されているスライスヘッダをそのヘッダバッファ133dから出力させずに、格納された状態に維持しておく。その後、上述と同様、ヘッダ挿入カウンタ133bはスライスヘッダ処理完了通知M3を分割点検出部139に出力する。
 ヘッダアドレス更新部133cは、MBラインの境界が検出された直後のカウント値(MBライン境界の直後のスライスヘッダによってリセットされたカウント値=0を含む)に応じて、ヘッダバッファ133dに格納されているスライスヘッダのMBアドレス情報“first_mb_in_slice”を更新する。
 例えば、ヘッダアドレス更新部133cは、カウント値n=0のときには、MBアドレス情報を更新せず、カウント値n≠0のときには、MBアドレス情報を(“mbposv”+n)×(“pic_width_in_mbs_minus1”+1)に更新する。なお、ピクチャがMBAFFで構成されている場合には、ヘッダアドレス更新部133cは、MBアドレス情報を(“mbposv”/2+n)×(“pic_width_in_mbs_minus1”+1)により更新する。
 図10は、分割ストリームバッファ152の第1領域df1~第4領域df4に割り当てられるMBラインおよびスライスヘッダを示す図である。
 例えば、ストリーム分割部130は、ストリームバッファ151に格納されている符号化ストリームのスライスA~Cを、スライスA、スライスB、スライスCの順に読み出す。
 この場合、まず、スライスヘッダ挿入部133のヘッダバッファ133dは、スライスAの先頭からスライスヘッダhaを取り出して記憶する。このとき、ヘッダ挿入カウンタ133bはカウント値を0にリセットする。したがって、ヘッダバッファ133dは、カウント値が0であるため、記憶しているスライスヘッダhaを出力することにより、そのスライスヘッダhaを分割ストリームバッファ152の第1領域df1に格納する。
 スライスヘッダhaがヘッダバッファ133dから出力されると、スライスデータ処理部134は、符号化ストリーム中でスライスAのスライスヘッダhaに続く第1MBラインを出力することにより、その第1MBラインを分割ストリームバッファ152の第1領域df1に格納する。その結果、第1領域df1には、スライスヘッダha、スライスAに属する第1MBラインの順に、それらのデータが格納される。
 第1MBラインがスライスデータ処理部134から出力されると、上述のヘッダ挿入カウンタ133bはカウント値を1にカウントアップする。したがって、ヘッダバッファ133dは、第1MBラインの終端でカウント値が1であるため、記憶しているスライスヘッダhaを複製スライスヘッダha’として出力することにより、その複製スライスヘッダha’を分割ストリームバッファ152の第2領域df2に格納する。なお、複製スライスヘッダha’のMBアドレス情報はヘッダアドレス更新部133cによって更新されている。
 複製スライスヘッダha’がヘッダバッファ133dから出力されると、スライスデータ処理部134は、符号化ストリーム中で第1MBラインに続く第2MBラインを出力することにより、その第2MBラインを分割ストリームバッファ152の第2領域df2に格納する。
 ここで、第2MBラインは、スライスAに属する複数のマクロブロックと、スライスBのスライスヘッダhbと、スライスBに属する複数のマクロブロックとを含んでいる。そこで、スライスデータ処理部134の分割点検出部139は、まず、第2MBラインに含まれるスライスAに属する全てのマクロブロックを第2領域df2に格納する。その格納が終了すると、分割点検出部139は、一時的にマクロブロックの出力処理を中断し、スライスヘッダ挿入部133からスライスヘッダ処理内容通知M1を受けるまで待機する。このとき、スライスヘッダ挿入部133は、スライスBのスライスヘッダhbを検出するため、カウント値を0にリセットし、「出力」を示すスライスヘッダ処理内容通知M1を分割点検出部139に送る。このスライスヘッダ処理内容通知M1を受けた分割点検出部139は、第2領域df2のスライスAの終端に対してスライス終端処理を行い、終端処理完了通知M2をスライスヘッダ挿入部133に送る。この終端処理完了通知M2を受けたスライスヘッダ挿入部133は、スライスBのスライスヘッダhbを第2領域df2に格納し、スライスヘッダ処理完了通知M3を分割点検出部139に送る。このスライスヘッダ処理完了通知M3を受けた分割点検出部139は、中断していた出力処理を再開し、第2MBラインに含まれる次のスライスBに属する複数のマクロブロックを第2領域df2に格納する。
 その結果、第2領域df2には、複製スライスヘッダha’に続いて、スライスAに属する第2MBラインの一部を成す複数のマクロブロック、スライスヘッダhb、スライスBに属する第2MBラインの一部を成す複数のマクロブロックの順に、それらのデータが格納される。
 第2MBラインがスライスデータ処理部134から出力されると、スライスヘッダ挿入部133のヘッダバッファ133dは、符号化ストリーム中でその第2MBラインに続くスライスCの先頭からスライスヘッダhcを取り出して記憶する。このとき、ヘッダ挿入カウンタ133bはカウント値を0にリセットする。したがって、ヘッダバッファ133dは、第2MBラインの終端でカウント値が0であるため、記憶しているスライスヘッダhcを出力することにより、そのスライスヘッダhcを分割ストリームバッファ152の第3領域df3に格納する。
 スライスヘッダhcがヘッダバッファ133dから出力されると、スライスデータ処理部134は、符号化ストリーム中でスライスCのスライスヘッダhcに続く第3MBラインを出力することにより、その第3MBラインを分割ストリームバッファ152の第3領域df3に格納する。その結果、第3領域df3には、スライスヘッダhc、スライスCに属する第3MBラインの順に、それらのデータが格納される。
 第3MBラインがスライスデータ処理部134から出力されると、上述のヘッダ挿入カウンタ133bはカウント値を1にカウントアップする。したがって、ヘッダバッファ133dは、第3MBラインの終端でカウント値が1であるため、記憶しているスライスヘッダhcを複製スライスヘッダhc’として出力することにより、その複製スライスヘッダhc’を分割ストリームバッファ152の第4領域df4に格納する。なお、複製スライスヘッダhc’のMBアドレス情報はヘッダアドレス更新部133cによって更新されている。
 このような処理が繰り返されることにより、分割ストリームバッファ152の第1領域df1~第4領域df4にデータが順次格納される。その結果、それらの第1領域df1~第4領域df4のそれぞれに第1分割ストリーム~第4分割ストリームが格納される。
 図11Aおよび図11Bは、スライス終端情報が設定される位置を示す図である。
 例えば、図11Aに示すように、ピクチャはスライスAとスライスBとを含み、スライスAに続くスライスBの先頭のマクロブロックはMBラインの左端にある。このような場合、スライスデータ処理部134の分割点検出部139は、スライスヘッダ挿入部133からスライスBのスライスヘッダhbが出力される直前に、そのスライスBの先頭MBラインから4MBライン前にある、スライスAのMBラインの終端に、スライスAのスライス終端情報ea’を設定する。さらに、スライスデータ処理部134の分割点検出部139は、スライスヘッダ挿入部133からスライスBの複製スライスヘッダhb’が出力される直前に、そのスライスBの先頭MBラインから3MBライン前にある、スライスAのMBラインの終端に、スライスAのスライス終端情報ea’を設定する。
 このように、スライスの先頭のマクロブロックがMBラインの左端にある場合には、そのMBラインの1~4MBライン前にある各MBラインの終端にスライス終端情報ea’が設定される。
 また、図11Bに示すように、ピクチャはスライスAとスライスBとを含み、スライスAに続くスライスBの先頭のマクロブロックはMBラインの左端以外にある。このような場合、スライスデータ処理部134の分割点検出部139は、スライスヘッダ挿入部133からスライスBの複製スライスヘッダhb’が出力される直前に、そのスライスBのスライスヘッダhbを含むMBラインから3MBライン前にある、スライスAのMBラインの終端に、スライスAのスライス終端情報ea’を設定する。
 このように、スライスの先頭のマクロブロックがMBラインの左端以外にある場合には、そのMBラインにおけるスライスの境界と、そのMBラインの1~3MBライン前にある各MBラインの終端にスライス終端情報ea’が設定される。
 ここで、分割点検出部139の動作について詳細に説明する。
 図12は、分割点検出部139の動作を示すフローチャートである。
 まず、分割点検出部139は、符号化ストリームの先頭側から処理対象とすべきデータ(例えばマクロブロック)を特定して出力し、分割ストリームバッファ152に格納する(ステップS100)。
 ここで、分割点検出部139は、出力されるマクロブロックのアドレス(MBアドレス値)を管理している。つまり、出力されるマクロブロックが、符号化ストリームに含まれるスライスの先頭マクロブロックであれば、分割点検出部139は、出力されるマクロブロックのMBアドレス値を、そのスライスのスライスヘッダに含まれるMBアドレス情報により示される値に更新する。そして、分割点検出部139は、その先頭マクロブロックに続くマクロブロックを出力するごとに、そのMBアドレス値をインクリメントする。なお、MBアドレス値は0以上の整数である。
 そして、分割点検出部139は、ステップS100でマクロブロックを出力するときには、そのマクロブロックのMBアドレス値に応じて、分割ストリームバッファ152内の格納先となる領域を選択し、その格納先となる領域にマクロブロックを格納する。具体的には、分割ストリームバッファ152に含まれる4つの領域に1番~4番までの番号が割り振られている場合、分割点検出部139は、m=((MBアドレス値/W)%N+1)番目の領域を選択し、そのm番目の領域にマクロブロックを格納する。
 なお、Wは、W=“pic_width_in_mbs_minus1”+1により示され、ピクチャの水平方向のマクロブロック数を示す。また、Nはデコードエンジン120の総数(N=4)であり、%は(MBアドレス値/W)をNで割ったときの余りを示す。
 次に、分割点検出部139は、ステップS100で出力されたマクロブロックがMBラインの終端(境界)であったか否か、つまりマクロブロックの出力処理がMBラインの終端に達したか否かを判別する(ステップS102)。具体的には、分割点検出部139は、ステップS100で出力されたマクロブロックのMBアドレス値が(Wの倍数-1)となるか否かを判別する。MBアドレス値=(Wの倍数-1)のときには、出力処理がMBラインの終端に達し、MBアドレス値≠(Wの倍数-1)のときには、出力処理がMBラインの終端に達していない。
 分割点検出部139は、終端に達していないと判別すると(ステップS102のNo)、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する(ステップS114)。一方、分割点検出部139は、終端(MBラインの境界)に達したと判別すると、つまりMBラインの境界を検出すると(ステップS102のYes)、MBラインの境界を検出したことをスライスヘッダ挿入部133に通知するとともに出力処理を中断し、その後、スライスヘッダ挿入部133からスライスヘッダ処理内容通知M1を受けたか否かを判別する(ステップS104)。
 分割点検出部139は、スライスヘッダ処理内容通知M1を受けていないと判別すると(ステップS104のNo)、スライスヘッダ処理内容通知M1を受けるまで待機する。
一方、分割点検出部139は、スライスヘッダ処理内容通知M1を受けたと判別すると(ステップS104のYes)、そのスライスヘッダ処理内容通知M1が「出力」を示しているか否かを判別する(ステップS106)。
 ここで、分割点検出部139は、「出力」を示していると判別すると(ステップS106のYes)、スライス終端処理を実行する(ステップS108)。つまり、分割点検出部139は、符号化ストリームがCABADで復号化される場合には、スライス終端情報として“end_of_slice_flag”に「1」を設定する。また、分割点検出部139は、符号化ストリームがCAVLDで復号化される場合には、スライス終端情報として“rbsp_slice_trailing_bits”を付与する。
 分割点検出部139は、ステップS106で「出力」を示していないと判別した後(ステップS106のNo)、またはステップS108でスライス終端処理を実行した後には、スライスヘッダ挿入部133に終端処理完了通知M2を送る(ステップS110)。その後、分割点検出部139は、スライスヘッダ挿入部133からスライスヘッダ処理完了通知M3を受けたか否かを判別する(ステップS112)。ここで、分割点検出部139は、スライスヘッダ処理完了通知M3を受けていないと判別すると(ステップS112のNo)、スライスヘッダ処理完了通知M3を受けるまで待機する。一方、分割点検出部139は、ステップS112でスライスヘッダ処理完了通知M3を受けたと判別したとき(ステップS112のYes)、符号化ストリームにおいて次に処理対象とすべきデータがあるか否か、つまり出力処理を終了すべきか否かを判別する(ステップS114)。
 ここで、分割点検出部139は、終了すべきと判別したときには(ステップS114のYes)、処理を終了し、終了すべきでないと判別したときには(ステップS114のNo)、再び、次の処理対象とすべきデータを出力して分割ストリームバッファ152に格納する(ステップS100)。
 次に、スキップラン修正部137aの動作について詳細に説明する。
 スキップラン修正部137aは、前述したようにMBスキップラン情報である“mb_skip_run”を修正する。MBスキップラン情報は、符号化方法にCAVLCを用いた場合に符号化ストリームに含まれる符号語であり、連続するスキップマクロブロックの個数(以下、「長さ」ともいう。)を示している。また、以下の記載において、MBスキップラン情報の長さとは、MBスキップラン情報が示す、連続するスキップマクロブロックの個数を意味する。
 図13Aおよび図13Bは、MBスキップラン情報の修正処理を説明するための説明図である。
 図13Aに示されたピクチャでは、MBラインL2の末尾に5個、MBラインL3の先頭に3個、MBラインL5の末尾に2個、MBラインL6の先頭に4個の連続するスキップマクロブロックが存在する。したがって、このようなピクチャを含む符号化ストリームでは、MBラインL2~L3に跨って連続するスキップマクロブロックの個数を示す長さ8(5+3=8)のMBスキップラン情報が符号化され、MBラインL5~L6に跨って連続するスキップマクロブロックの個数を示す長さ6(2+4=6)のMBスキップラン情報が符号化されている。
 しかし、このような場合にピクチャがMBラインごとに分割され、それらのMBラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、連続してスキップされるマクロブロックの数が変わってしまう。つまり、複数のMBラインに跨って連続するスキップマクロブロックの個数を示すMBスキップラン情報による、その複数のMBライン間の依存関係が崩れてしまう。
 すなわち、第1分割ストリームに含まれるMBラインはL1およびL5であり、MBラインL5の末尾に連続する2個のスキップマクロブロックが存在する。また、第2分割ストリームに含まれるMBラインはL2およびL6であり、MBラインはL2からL6に跨って連続する9個のスキップマクロブロックが存在する。また、第3分割ストリームに含まれるMBラインはL3およびL7であり、MBラインはL3の先頭に連続する3個のスキップマクロブロックが存在する。また、第4分割ストリームに含まれるMBラインはL4およびL8であり、スキップマクロブロックは存在しない。
 以上のように、もともと符号化ストリームに含まれていたMBスキップラン情報は長さ8と6であったのに対し、第1分割ストリームに対しては長さ2のMBスキップラン情報を、第2分割ストリームに対しては長さ9のMBスキップラン情報を、第3分割ストリームに対しては長さ3のMBスキップラン情報を出力する必要がある。つまり、複数のMBラインに跨って連続するスキップマクロブロックの個数を示すMBスキップラン情報によって、その複数のMBラインが互いに依存関係を有する場合には、その依存関係が、各分割ストリームにおけるMBラインの前後関係に応じた新たな依存関係となるように、MBスキップラン情報を修正する必要がある。
 そこでスキップラン修正部137aは、まずスライスデータ層デコード部135aによって復号化されたMBスキップラン情報に対応するスキップマクロブロックの集合が複数のMBラインに跨って存在する場合、MBライン境界でMBスキップラン情報を分割する。ここで、MBライン境界でMBスキップラン情報を分割するとは、複数のMBラインに跨って連続する複数のスキップマクロブロックの個数を分割し、MBラインごとのスキップマクロブロックの個数をそれぞれが示す複数のMBスキップラン情報を生成することを意味する。
 すなわち、図13Aに示されたピクチャの場合、スキップラン修正部137aは、MBラインL2~L3に跨って存在する8個のスキップマクロブロックの集合に対応するMBスキップラン情報を、MBラインL2に含まれる5個のスキップマクロブロックの集合に対応するMBスキップラン情報と、MBラインL3に含まれる3個のスキップマクロブロックの集合に対応するMBスキップラン情報とに分割する。同様に、スキップラン修正部137aは、MBラインL5~L6に跨って存在する6個のスキップマクロブロックの集合に対応するMBスキップラン情報を、MBラインL5に含まれる2個のスキップマクロブロックの集合に対応するMBスキップラン情報と、MBラインL6に含まれる4個のスキップマクロブロックの集合に対応するMBスキップラン情報とに分割する。
 次に、スキップラン修正部137aは、分割されたMBスキップラン情報のうち、各分割ストリームにおいて連続するスキップマクロブロックの集合に対応する複数のMBスキップラン情報を再結合する。ここで複数のMBスキップラン情報の再結合とは、複数のMBスキップラン情報を、その複数のMBスキップラン情報のそれぞれが示す個数の総和を示す1つのMBスキップラン情報に変換することを意味する。
 図13Aに示されたピクチャの場合、分割されたMBスキップラン情報に対応するスキップマクロブロックの集合のうち、MBラインL2に含まれる長さ5のスキップマクロブロックの集合と、MBラインL6に含まれる長さ4のスキップマクロブロックの集合とは、第2分割ストリーム内で連続する。そのため、スキップラン修正部137aは、これらの2つのスキップマクロブロックの集合にそれぞれ対応する2つのMBスキップラン情報を結合し、長さ9のMBスキップラン情報に変換する。
 最後にスキップラン修正部137aは、このようにして得られたMBスキップラン情報を再び符号化し、符号化されたMBスキップラン情報を出力する。
 以上説明したように、スキップラン修正部137aは、入力されたMBスキップラン情報をMBライン境界で分割した後、必要に応じて再結合することで、各分割ストリームに対して適切な長さのMBスキップラン情報を出力することが出来る。
 なお、ここで、スキップラン修正部137aが、各分割ストリームにおいて連続するMBスキップラン情報を分割されたままにせずに、必要に応じて再結合するのは、H.264/AVC規格において、複数のMBスキップラン情報が連続して存在することが許されていないためである。つまり、H.264/AVC規格において、連続するスキップマクロブロックの個数を複数のMBスキップラン情報を用いて表現することが許されていないので、スキップラン修正部137aは、その複数のMBスキップラン情報を結合する。このように、スキップラン修正部137aがH.264/AVC規格に準拠した形式でMBスキップラン情報が修正されることにより、各分割ストリームがH.264/AVC規格に準拠した形式で生成される。その結果、後段のデコードエンジン120は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
 また、図13Bに示されたピクチャでは、MBラインL2の末尾に5個の連続するスキップマクロブロックと、MBラインL6の先頭に3個の連続するスキップマクロブロックとが存在する。したがって、このようなピクチャを含む符号化ストリームでは、MBラインL2に長さ5のMBスキップラン情報が符号化され、MBラインL6に長さ3のMBスキップラン情報が符号化されている。
 このピクチャの場合、複数のMBラインに跨って連続するスキップマクロブロックの個数を示すMBスキップラン情報は存在していないため、スキップラン修正部137aは、MBライン境界でMBスキップラン情報を分割する必要はない。しかしながら、このピクチャがMBラインごとに分割され、それらのMBラインが別々の分割ストリームに割り当てられた場合、第2分割ストリームにおいて、長さ5のMBスキップラン情報と長さ3のMBスキップラン情報とが連続して存在することになる。
 したがってこの例のように、複数のMBラインに跨って連続するスキップマクロブロックの個数を示すMBスキップラン情報は存在しない場合においても、スキップラン修正部137aは、各分割ストリームにおいて1つの連続するスキップマクロブロックの個数を示す複数のMBスキップラン情報を再結合する処理を行う。すなわち、スキップラン修正部137aは、第2分割ストリームにおいて、長さ5のMBスキップラン情報と長さ3のMBスキップラン情報とを結合し、長さ8のMBスキップラン情報に変換する。
 スキップラン修正部137aは、このようにして得られたMBスキップラン情報を再び符号化し、符号化されたMBスキップラン情報を出力する。
 図14は、スキップラン修正部137aの構成を示すブロック図である。
 スキップラン修正部137aは、スキップラン抽出部160、スキップラン分割部161、スキップラン累積・保持部162、加算部163、およびスキップラン符号化部164を備えている。
 スキップラン抽出部160は、スライスデータ層デコード部から出力されるストリームから、MBスキップラン情報を検出および抽出する。抽出したMBスキップラン情報は、スキップラン分割部161に対して出力され、それ以外の情報は、そのまま分割点検出部139aに対して出力される。
 スキップラン分割部161は、MBスキップラン情報の長さとMBスキップラン情報が存在するマクロブロックの位置情報から、入力されたMBスキップラン情報が複数のMBラインに跨って連続するスキップマクロブロックの個数を示すかどうかを判定する。ここで、複数のMBラインに跨って連続するスキップマクロブロックの個数を示すと判定された場合は、スキップラン分割部161は、MBライン境界を分割点として、MBスキップラン情報を分割する。分割されたMBスキップラン情報のうち、MBライン境界を越えたスキップマクロブロックの個数を示すMBスキップラン情報は加算部163に出力され、MBライン境界を越えなかったスキップマクロブロックの個数を示すMBスキップラン情報はスキップラン累積・保持部162に出力される。
 なお、MBスキップラン情報は、3つ以上のMBラインに跨って連続するスキップマクロブロックの個数を示す場合もある。その場合、連続するスキップマクロブロックの間に2つ以上のMBライン境界が存在することになるため、スキップラン分割部161はそれぞれのMBライン境界を分割点として、繰り返し分割を行う。その際、分割されたMBスキップラン情報のうち、最後のMBライン境界を越えたスキップマクロブロックの個数を示すMBスキップラン情報が加算部163に出力され、それ以外のMBスキップラン情報はスキップラン累積・保持部162に出力される。
 スキップラン累積・保持部162は、スキップラン分割部161から出力される分割されたMBスキップラン情報を受け取り、先行MBスキップラン情報として分割ストリームごとにその値を保持する。すなわち、スキップラン累積・保持部162は、第1分割ストリームに含まれるMBスキップラン情報を受け取った場合は第1分割ストリームの先行MBスキップラン情報として保持する。また、スキップラン累積・保持部162は、第2分割ストリームに含まれるMBスキップラン情報を受け取った場合は第2分割ストリームの先行MBスキップラン情報として保持する。また、スキップラン累積・保持部162は、第3分割ストリームに含まれるMBスキップラン情報を受け取った場合は第3分割ストリームの先行MBスキップラン情報として保持する。また、スキップラン累積・保持部162は、第4分割ストリームに含まれるMBスキップラン情報を受け取った場合は第4分割ストリームの先行MBスキップラン情報として保持する。
 このとき、既にスキップラン累積・保持部162に先行MBスキップラン情報が保持されている場合、スキップラン累積・保持部162は、スキップラン分割部161から受け取ったMBスキップラン情報を累積し、新たなMBスキップラン情報として、分割ストリーム毎にその値を保持する。つまり、スキップラン累積・保持部162は、分割ストリームごとに、スキップラン分割部161から受け取ったMBスキップラン情報を、保持されている先行MBスキップラン情報に加算する。
 加算部163は、スキップラン分割部161からMBスキップラン情報を受け取るとともに、そのMBスキップラン情報が含まれる分割ストリームに対応した、スキップラン累積・保持部162に保持された先行MBスキップラン情報を読み出す。そして、加算部163は、スキップラン分割部161から受け取ったMBスキップラン情報の値と、スキップラン累積・保持部162にから読み出した先行MBスキップラン情報の値とを加算し、その結果を修正されたMBスキップラン情報として、スキップラン符号化部164に出力する。この処理により、MBスキップラン情報の再結合が行われる。
 スキップラン符号化部164は、加算部163から出力される修正されたMBスキップラン情報を再符号化して分割点検出部139aに出力することで、修正されたMBスキップラン情報をストリームに再度埋め込む。
 図15は、スキップラン修正部137aによるMBスキップラン情報の修正動作を示すフローチャートである。
 まずスキップラン修正部137aは、処理しているストリームがスライス終端に到達しているかどうかを判別する(ステップS200)。これは、MBスキップラン情報がスライス境界を跨って連続するスキップマクロブロックの個数を示すことがないため、スライス終端に到達した際には、スキップラン修正部137aの内部に保持された先行MBスキップラン情報をすべて出力する必要があるためである。ここでスライス終端に到達していると判別すると(ステップS200のYes)、ステップS224の処理に進む。処理の詳細は後述する。
 一方、スライス終端に到達していないと判別すると(ステップS200のNo)、スキップラン修正部137aは、MBスキップラン情報“mb_skip_run”を取得したかどうかを調べる(ステップS202)。ここで、まだMBスキップラン情報を取得していない場合(ステップS202のNo)、スキップラン修正部137aは、処理の最初に戻りストリームを再度読み進める。
 一方、MBスキップラン情報を取得している場合(ステップS202のYes)、スキップラン修正部137aは、該当のMBスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する(ステップS204)。ここで、スキップラン修正部137aは、取得したMBスキップラン情報によって示される連続したスキップマクロブロックのうち、先頭のスキップマクロブロックの位置を特定する。
 スキップラン修正部137aは、ステップS204でマクロブロックの位置を算出すると、そのマクロブロックの位置情報とMBスキップラン情報の長さとから、連続するスキップマクロブロックがMBライン境界に到達するかどうかを調べることにより、取得したMBスキップラン情報を分割する必要があるかどうかを判定する(ステップS206)。
 より具体的には、先頭のスキップマクロブロックの水平位置および垂直位置をそれぞれ“mbposh”、“mbposv”と表現し、ピクチャの水平方向の総マクロブロック数を“PicWidthInMbs”と表現した場合において、“mb_skip_run ≧ PicWidthInMbs - mbposh”が成立するときは、スキップラン修正部137aは、連続するスキップマクロブロックがMBライン境界に到達すると判定する。
 なお、ここではMBライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、スキップラン修正部137aは、マクロブロックの位置情報とMBスキップラン情報の長さから、連続するスキップマクロブロックが分割境界に到達するかどうかを判定すればよい。
 連続するスキップマクロブロックがMBライン境界に到達すると判定された場合(ステップS206のYes)、スキップラン修正部137aは、MBスキップラン情報を分割するためステップS216に進む。詳細は後述する。
 連続するスキップマクロブロックがMBライン境界に到達しないと判定された場合(ステップS206のNo)、スキップラン修正部137aは、該当のMBスキップラン情報がMBラインの先頭に位置しているかどうかを判定する(ステップS208)。すなわち、スキップラン修正部137aは、該当のMBスキップラン情報について、先行MBスキップラン情報との結合が必要かどうかを判定する。
 該当のMBスキップラン情報がMBラインの先頭に位置していると判定された場合(ステップS208のYes)、スキップラン修正部137aは、MBスキップラン情報“mb_skip_run”に対して先行MBスキップラン情報“prev_mb_skip_run”を加算することにより、MBスキップラン情報の再結合を行う(ステップS210)。なお、このMBスキップラン情報の再結合処理は、分割ストリーム毎に独立して行われる必要がある。すなわち、先行MBスキップラン情報は分割ストリーム毎にスキップラン修正部137aに保持されており、該当のMBスキップラン情報が含まれるMBラインに対応した、先行MBスキップラン情報が加算される。
 ステップS208で該当のMBスキップラン情報がMBラインの先頭に位置していないと判定された場合(ステップS208のNo)、またはステップS210でMBスキップラン情報の結合が実行された後、スキップラン修正部137aは、MBスキップラン情報の再符号化処理を行う(ステップS212)。これは、分割ストリームをH.264/AVC規格に準拠した形式にするためである。
 その後スキップラン修正部137aは、再符号化されたMBスキップラン情報を分割点検出部139aに出力して処理を終了する(ステップS214)。
 また、ステップS206で連続するスキップマクロブロックがMBライン境界に到達すると判定された場合(ステップS206のYes)、スキップラン修正部137aは、MBライン境界を分割点として、該当のMBスキップラン情報を前半部と後半部とに分割する(ステップS216)。なお、連続するスキップマクロブロックがMBライン境界に到達しているがMBライン境界を跨がない場合、後半部は0であることもあり得る。
 さらにスキップラン修正部137aは、分割したMBスキップラン情報のうち、前半部を先行MBスキップラン情報“prev_mb_skip_run”として内部に保持する。このとき、既にスキップラン修正部137aに保持された先行MBスキップラン情報が存在する場合、スキップラン修正部137aは、新たに発生したMBスキップラン情報の前半部の長さを保持された先行MBスキップラン情報の長さに加算して保持する(ステップS218)。なお前述したように、先行MBスキップラン情報は、それ自身が含まれるMBラインに対応する分割ストリームの先行MBスキップラン情報として、分割ストリームごとに独立に保持される。
 次にスキップラン修正部137aは、分割したMBスキップラン情報のうち、後半部を新たなMBスキップラン情報として設定した後(ステップS220)、その長さが0であるかどうかを判定する(ステップS222)。
 ステップS222で新たなMBスキップラン情報の長さが0であると判定された場合(ステップS222のYes)、スキップラン修正部137aは、それ以上処理すべきMBスキップラン情報がないものとして、処理を終了する。
 ステップS222で新たなMBスキップラン情報の長さが0でないと判定された場合(ステップS222のYes)、スキップラン修正部137aは、まだ処理すべきMBスキップラン情報が存在するものとしてステップS204に戻り、再度MBスキップラン情報の分割・再結合および出力処理を行う。このように、スキップラン修正部137aがMBスキップラン情報の分割・再結合を繰り返し行うことにより、3MBライン以上に跨ったMBスキップラン情報についても正しく分割・再結合処理が行われる。
 一方、ステップS200でスライス終端であると判別された場合(ステップS200のYes)、スキップラン修正部137aに保持された先行MBスキップラン情報を出力するため、先行MBスキップラン情報“prev_mb_skip_run”を、そのままMBスキップラン情報“mb_skip_run”に置き換える(ステップS224)。その後はステップS212の処理に進み、スキップラン修正部137aは、置き換えたMBスキップラン情報を再符号化した後、分割点検出部139aに出力して処理を終了する(ステップS212~S214)。なお、この先行MBスキップラン情報の出力は、すべての分割ストリームに対して行われる。
 以上説明した処理が、スキップラン修正部137aではストリームの終了まで繰り返し行われる。このように、スキップラン修正部137aでは、MBスキップラン情報の分割・再結合が適切に行われる。
 次に、QPデルタ修正部138a、138bの動作について詳細に説明する。なお、以降の説明において、QPデルタ修正部138a、138bについて共通する機能および処理動作を説明するときには、それらを区別することなくQPデルタ修正部138と総称する。
 QPデルタ修正部138は、マクロブロックごとに原則として存在するQP変化量“mb_qp_delta”を修正する。QP変化量とは、マクロブロックの量子化パラメータであるQP値を復号するために符号化ストリームに含まれる符号語であり、対象マクロブロックと、その直前に処理したマクロブロックのQP値の差分値を示している。
 QP値の復号は、次式(1)によって行われる。
 QP = ( ( QPY,PREV + mb_qp_delta + 52 + 2 * QpBdOffset )% ( 52 + QpBdOffset ) ) - QpBdOffset    ・・・(1)
 ここで、QPは処理対象マクロブロックの輝度のQP値を、QPY,PREVは直前のマクロブロックの輝度のQP値を示している。なお、QpBdOffsetはピクチャを構成する画素のビット深度によって決まる値であり、一般的に用いられる8ビット深度の場合、QpBdOffset=0である。その場合、上記の式(1)は次式(2)のように書き換えられる。
 QP = ( QPY,PREV + mb_qp_delta + 52 ) % 52    ・・・(2)
 式(2)から分かるように、画素のビット深度が8である場合、QP値は0~51の範囲となるようにQP変化量“mb_qp_delta”を用いて復号化される。なお、“mb_qp_delta”は-26~+25の範囲を取りうる値である。
 量子化パラメータであるQP値の復号は、処理順で連続するマクロブロック間で依存関係があるが、途中でスライスの境界があった場合はそこで依存関係が解消される。すなわち、量子化パラメータであるQP値は、スライスの先頭でスライスQP値によって初期化される。スライスの先頭のマクロブロックには、該当マクロブロックのQP値とスライスQP値との差分値がQP変化量として符号化される。
 図16Aおよび図16Bは、QP変化量の修正処理を説明するための説明図である。
 図16Aに示されたピクチャにおけるマクロブロックCに着目すると、本来その直前に処理が行われるマクロブロックはマクロブロックBである。したがって、マクロブロックCには、マクロブロックBのQP値とマクロブロックCのQP値との差分値がQP変化量として符号化されている。
 しかし、このようなピクチャがMBラインごとに分割され、それらのMBラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、MBライン境界におけるマクロブロックの前後関係が変化してしまう。
 すなわち、ストリーム分割後には、マクロブロックCが含まれる第2分割ストリームにおいて、マクロブロックCの直前に位置するマクロブロックはマクロブロックAとなる。したがって、そのまま第2分割ストリームをデコードエンジン120が復号した場合、マクロブロックAのQP値に対して、マクロブロックBのQP値とマクロブロックCのQP値との差分値であるQP変化量を反映してしまうことになり、マクロブロックCのQP値を正しく復号化できない。つまり、2つのMBラインに跨るマクロブロック間の変化量を示すQP変化量による、そのMBライン間の依存関係が崩れてしまう。
 そこでQPデルタ修正部138は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、QP変化量の修正を行う。つまり、2つのMBラインに跨るマクロブロック間の変化量を示すQP変化量によって、その2つのMBラインが依存関係を有する場合には、その依存関係が、各分割ストリームにおけるMBラインの前後関係に応じた新たな依存関係となるように、QP変化量を修正する。
 QP変化量の修正方法としては、全てのマクロブロックについてQP値の復号化(QP値の復元)を行った上で、ストリーム分割後の新たなマクロブロックの前後関係に基づき、QP変化量を算出し直す方法が考えられる。しかしながらこの方法では、QP値復号化とQP変化量算出との2つの処理が必要であり、QPデルタ修正部138における処理量が大きくなってしまう。
 そこで本実施の形態では、QPデルタ修正部138は、分割ストリーム毎に、対象分割ストリームに割り当てられなかったマクロブロックのQP変化量を累積することで、QP値を復号化することなく、修正されたQP変化量を直接導出する。
 ここで、QP変化量累積による修正QP変化量の導出について、図を用いて説明する。図17は、QP変化量の累積を説明するための説明図である。
 図中において、横軸はQP値を表しており、QP1~QP4は連続したマクロブロックにおけるQP値を示している。また図中には、各々のQP値の差分値を表す“mb_qp_delta”が示されている。“mb_qp_delta”の末尾に添えられている2桁の数字は、上位側が先行するマクロブロックに対応するQP値の番号を示しており、下位側が後続するマクロブロックに対応するQP値の番号を示している。例えば、“mb_qp_delta12”は、QP1とQP2との差分値を表す。また、図に示されるように、“mb_qp_delta”は、QP値の最小値である0と、最大値である51とが、連続してつながった軸におけるQP値の差分値を表している。
 通常のQP値の復号処理では、QP1と“mb_qp_delta12”とから、式(2)を用いてQP2が求められる。また、同様にQP2と“mb_qp_delta23”とからQP3が求められる。また、QP3と“mb_qp_delta34”とからQP4が求められる。
 ここで、図に示されているように、“mb_qp_delta12”、“mb_qp_delta23”、“mb_qp_delta34”が表すQP変化量の合計は、QP1とQP4との差分値を示す“mb_qp_delta14”に等しい。すなわち、隣接していないマクロブロック間のQP変化量を求めるには、その間のすべてのQP変化量“mb_qp_delta”を累積すれば良いことが分かる。
 なお、累積は次式(3)に従って行う。
 acc_mb_qp_delta = ( acc_mb_qp_delta + mb_qp_delta + 52 ) % 52    ・・・(3)
 ここで、“acc_mb_qp_delta”は、累積された“mb_qp_delta”を示す。このように、式(2)に合わせた形式で“mb_qp_delta”を累積することで、図17に示したQP値の最小値である0と最大値である51が連続してつながった軸において、QP変化量の合計を求めることが出来る。
 具体的な例として、図16Aに示されたピクチャにおけるマクロブロックCのQP変化量の修正処理について説明する。前述のように、ストリーム分割後の第2分割ストリームにおいて、マクロブロックCの直前に位置するマクロブロックはマクロブロックAとなるため、マクロブロックCには、マクロブロックAのQP値とマクロブロックCのQP値の差分値がQP変化量として含まれる必要がある。
 そこでQPデルタ修正部138は、MBラインL3~L5に含まれる全てのマクロブロックのQP変化量と、マクロブロックCのQP変化量を累積する。このように、マクロブロックAとマクロブロックCの間にある全てのマクロブロックのQP変化量を累積することで、マクロブロックAのQP値とマクロブロックCのQP値の差分値である修正QP変化量を求めることが出来る。
 なお、ここで求められたQP変化量は式(3)により導出されているため、0~51の範囲を示す値となっている。本来のQP変化量“mb_qp_delta”は-26~+25の範囲を取る値であるため、QPデルタ修正部138は次式(4)により、QP変化量“mb_qp_delta”を-26~+25の範囲となるように修正する。
 acc_mb_qp_delta>25の場合:mb_qp_delta = acc_mb_qp_delta - 52
 acc_mb_qp_delta≦25の場合:mb_qp_delta = acc_mb_qp_delta    ・・・(4)
 なお式(4)で示した処理は、ここで示したようにQP変化量“mb_qp_delta”の累積対象の全てのマクロブロックについて累積した後、最後に1回だけで行ってもよいし、累積対象の全てのマクロブロックについて、1マクロブロックごとに行ってもよい。
 また、ここではマクロブロックCに着目して説明したが、全てのMBラインの先頭のマクロブロックについても同様な処理を行う。例えば、マクロブロックCの下方向に隣接するマクロブロックについては、MBラインL4~L6の全てのマクロブロックのQP変化量を累積し、該当のマクロブロックに対して反映を行うことで、修正されたQP変化量を導出する。これらの処理は、分割ストリーム毎に独立して行われる。
 最後にQPデルタ修正部138は、このようにして得られた修正QP変化量を再び符号化し、符号化された修正QP変化量を分割点検出部139に対して出力する。なお、QPデルタ修正部138aはCAVLC方式で、QPデルタ修正部138bはCABAC方式で符号化を行う。
 以上説明したように、QPデルタ修正部138は、入力されたQP変化量を分割ストリームにおけるマクロブロックの前後関係に合うように修正することで、各分割ストリームに対して適切なQP変化量を設定することができる。その結果、後段のデコードエンジン120は、特別な処理を要することなく分割ストリームを復号化することが可能となる。
 また、図16Bには、MBラインL4とL5の境界でスライスが分割されていた場合の例を示している。この例では、MBラインL1~L4はスライスAに、MBラインL5~L8はスライスBに含まれる。
 このとき、第2分割ストリームにおいて、図16A同様にマクロブロックAとマクロブロックCは連続しているが、それぞれのマクロブロックが含まれるスライスは異なっており、マクロブロックAとマクロブロックCとの間で依存関係はなくなっている。第2分割ストリームにおいて、マクロブロックCはスライスBの先頭のマクロブロックとなるため、マクロブロックCのQP変化量は、マクロブロックCのQP値とスライスBのスライスQP値との差分値を示している必要がある。
 すなわちQPデルタ修正部138は、マクロブロックAからマクロブロックCの間に含まれるマクロブロックのうち、スライスBに含まれるものについて、QP変化量の累積を行うことで、スライスBのスライスQP値からの差分値を求めることが出来る。しかしながら、実際にスライスが分割されているかどうかは、スライスBの先頭が到達するまでは判別できない。
 そこでQPデルタ修正部138は、マクロブロックAからマクロブロックCの間に含まれるマクロブロックのすべてについてQP変化量の累積を行うとともに、スライスBの先頭のマクロブロック処理開始時に、累積QP変化量“acc_mb_qp_delta”を0にリセットする。このようにすることで、スライスBに含まれるマクロブロックのみについて、QP変化量の累積を行うことができ、正しくマクロブロックCの修正QP変化量を求めることが出来る。
 このようにして得られた修正QP変化量を再び符号化し、符号化された修正QP変化量を分割点検出部139に対して出力する。
 図18は、QPデルタ修正部138によるQP変化量の修正処理を示すフローチャートである。
 マクロブロックの処理が開始されると、まずQPデルタ修正部138は、処理対象マクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する(ステップS300)。
 次にQPデルタ修正部138は、処理対象マクロブロックがスライスの先頭であるかどうかを判定する(ステップS302)。
 処理対象マクロブロックがスライスの先頭であると判定された場合(ステップS302のYes)、全ての分割ストリームに対応する累積QP変化量“acc_mb_qp_delta”を0にリセットする(ステップS304)。この処理により、途中でスライスが分割されていた場合、正しくスライスQP値からのQP変化量が導出できる。なお、ここではスライスの先頭のマクロブロックかどうかで累積QP変化量をリセットするかどうかを決定しているが、スライスの先頭で累積QP変化量をリセット出来れば良いため、スライスヘッダが到着した時点で累積QP変化量をリセットするような構成であっても良い。
 ステップS302で処理対象マクロブロックがスライスの先頭でないと判定された場合(ステップS302のNo)、またはステップS304で累積QP変化量のリセットを行った後、QPデルタ修正部138は、ステップS300で求めたマクロブロックの位置情報から、処理対象マクロブロックの分割ストリーム出力先を判定する(ステップS306)。
 ステップS306で処理対象マクロブロックの出力先が第1分割ストリームであると判定された場合、QPデルタ修正部138は、第2、第3、第4分割ストリームに対応する累積QP変化量に対し、処理対象マクロブロックのQP変化量を、式(3)に従って累積する(ステップS308)。
 また、ステップS306で処理対象マクロブロックの出力先が第2分割ストリームであると判定された場合、QPデルタ修正部138は、第1、第3、第4分割ストリームに対応する累積QP変化量に対し、処理対象マクロブロックのQP変化量を、式(3)に従って累積する(ステップS310)。
 また、ステップS306で処理対象マクロブロックの出力先が第3分割ストリームであると判定された場合、QPデルタ修正部138は、第1、第2、第4分割ストリームに対応する累積QP変化量に対し、処理対象マクロブロックのQP変化量を、式(3)に従って累積する(ステップS312)。
 また、ステップS306で処理対象マクロブロックの出力先が第4分割ストリームであると判定された場合、QPデルタ修正部138は、第1、第2、第3分割ストリームに対応する累積QP変化量に対し、処理対象マクロブロックのQP変化量を、式(3)に従って累積する(ステップS314)。
 このように、ステップS308~ステップS314では、処理対象マクロブロックの出力先となる分割ストリーム以外の分割ストリームに対応するQP変化量の累積が行われる。これは、各分割ストリームにおいて、対象の分割ストリームに割り当てられなかった3MBラインに含まれるマクロブロックのQP変化量累積を行うことを意味している。このような処理により、QPデルタ修正部138は、対象の分割ストリームに割り当てられなかった3MBラインに対する前後のマクロブロックのQP値の差分値を正しく是正することが出来る。
 ステップS308、ステップS310、ステップS312、ステップS314でQP変化量の累積を行った後、QPデルタ修正部138は、ステップS300で求めたマクロブロックの位置情報から、処理対象マクロブロックがMBラインの先頭に位置しているかどうかを判定する(ステップS316)。なお、ここではMBライン単位でストリームを分割する構成を示しているが、他の分割単位でストリームを分割する場合においても、同様に、QPデルタ修正部138は、マクロブロックの位置情報から、処理対象マクロブロックが分割単位の先頭に位置しているかどうかを判定すればよい。
 処理対象マクロブロックがMBラインの先頭に位置していると判定された場合(ステップS316のYes)、QPデルタ修正部138は、処理対象マクロブロックが含まれる分割ストリームに対応する累積QP変化量に対し、処理対象マクロブロックのQP変化量を、式(3)に従って累積する。そして、QPデルタ修正部138は、得られた累積QP変化量を式(4)に従って-26~+25の範囲となるように修正したうえで、処理対象マクロブロックのQP変化量として置き換える。さらに、QPデルタ修正部138は、処理対象マクロブロックが含まれる分割ストリームに対応する累積QP変化量を0にリセットする(ステップS318)。このように、ステップS318では、累積したQP変化量が、MBライン先頭のマクロブロックのQP変化量に反映されることで、QP変化量の修正が行われる。
 処理対象マクロブロックがMBラインの先頭に位置していないと判定された場合(ステップS316のNo)、またはステップS318で処理対象マクロブロックのQP変化量の修正が行われた後、QPデルタ修正部138は、処理対象マクロブロックのQP変化量の再符号化処理を行う(ステップS320)。これは、分割ストリームをH.264/AVC規格に準拠した形式にするためである。
 その後QPデルタ修正部138は、再符号化されたQP変化量を分割点検出部139に出力して処理を終了する(ステップS322)。
 以上のように、QPデルタ修正部138は、MBラインの先頭のマクロブロックに対してはQP変化量の修正を行った上で、MBラインの先頭以外のマクロブロックに対してはそのまま、QP変化量の再符号化・出力処理を行う。
 このように、本実施の形態における画像復号化装置100では、符号化されたピクチャは複数のMBライン(構成単位)に分割され、複数のMBラインのそれぞれが分割ストリームの一部としてN個のデコードエンジン120に割り当てられて復号化されるため、N個のデコードエンジン120による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、H.264/AVCの符号化ピクチャが1スライスで構成されている場合であっても、その符号化ピクチャは複数のMBラインに分割されるため、その1スライスの復号化を1つのデコードエンジン120で負担することなく、N個のデコードエンジン120で均等に負担することができる。
 ここで、符号化ピクチャが複数のMBラインに分割されると、複数のMBラインに跨るスライスが複数のスライス部分(例えば、図3に示す各MBラインL1~L6や、MBラインL7のうちの先頭6マクロブロックの集合など)に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、1つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が1つ以上集まって構成されるスライス部分群(例えば、図3に示す第2分割ストリームに含まれるMBラインL2、L6)が含まれることとなる。また、このようなスライス部分群(MBラインL2、L6)には、その先頭を示すスライスヘッダや、その終端を示すスライス終端情報が含まれていない場合がある。
 さらに、符号化ストリームに含まれる所定の符号語に起因して、複数のMBラインが依存関係を持つ場合がある。例えば、H.264/AVCでは、MBスキップラン情報“mb_skip_run”や、QP変化量“mb_qp_delta”によって複数のMBラインが互いに依存関係を有する場合がある。このような符号化ストリームが複数のMBラインに分割されて互いに異なる分割ストリームに割り当てられると、MBライン間の依存関係を正しく保つことが出来ない。
 そこで本実施の形態では、ストリーム分割部130がそのスライス部分群を新たなスライスとして再構成する。その結果、そのスライス部分群を含む分割ストリームを復号化するデコードエンジン120は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、本実施の形態では、N個のデコードエンジン120のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、画像復号化装置100の全体構成を簡単にすることができる。
 また、本実施の形態の画像復号化装置では、上記特許文献3の画像復号化装置と比べて、復号化処理の高速化を図ることができる。具体的には、上記特許文献3の画像復号化装置では、符号化ストリームの可変長復号化およびデブロッキングフィルタ処理の並列化を行っていない。つまり、上記特許文献3の画像復号化装置では、符号化ストリームを適切に分割していない、言い換えれば、符号化ストリームが分割されて生成されるデータが、従来のデコードエンジンで復号化可能なストリームとして構成されていない。一方、本実施の形態の画像復号化装置100では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン120のそれぞれは、図33に示すデコードエンジン421のように、可変長復号化およびデブロッキングフィルタ処理を並列に実行することができる。その結果、本実施の形態の画像復号化装置では、復号化処理の高速化を図ることができる。
 また、本実施の形態では、上記特許文献4の画像復号化装置と比べて、従来のデコードエンジンを流用することができるというメリットがある。具体的には、上記特許文献4の画像復号化装置では、符号化ストリームを分割することなく、符号化ストリームにおいてMBラインの境界に行ヘッダを挿入している。したがって、上記特許文献4の画像復号化装置の複数のデコードエンジンは、行ヘッダを目印にして自らが処理すべきMBラインを符号化ストリームから抽出しなければならない。このとき、それらのデコードエンジンは、処理対象のMBラインが格納されている位置が既に特定されていれば、処理対象のMBラインを抽出するために符号化ストリームに対して不連続にアクセスする必要があり、その位置が特定されていなければ、符号化ストリームに先頭からアクセスし、処理対象でないMBラインを読み飛ばす必要がある。一方、本実施の形態の画像復号化装置100では、符号化ストリームを複数の分割ストリームに適切に分割しているため、デコードエンジン120のそれぞれは、図33に示すデコードエンジン421のように、分割ストリームを通常の符号化ストリームとして扱って復号化することができる。このように、本実施の形態の画像復号化装置では、従来のデコードエンジンを流用することができ、上記特許文献4の画像復号化装置では成し得ない効果を奏することができる。
 また、このような本実施の形態における画像復号化装置100は、ストリーム分割部130に入力される上述のモード情報に応じて、高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
 図19Aは、高解像度デコードを説明するための説明図である。図19Bは、高速デコードを説明するための説明図である。図19Cは、複数チャンネルデコードを説明するための説明図である。
 画像復号化装置100のストリーム分割部130は、図19Aに示すように、高解像度デコードの実行を指示するモード情報を取得すると、4k2kの符号化ストリームを上述のように4つの分割ストリームに分割し、4つの分割ストリームのそれぞれを各デコードエンジン120に復号化させる。
 例えば、4つのデコードエンジン120はそれぞれ、HDの画像(1920×1088画素、60i)を2チャンネル分復号可能な処理能力を有するため、画像復号化装置100は、4k2kの画像(3840×2160画素、60p)をリアルタイムに処理することができる。
 また、画像復号化装置100のストリーム分割部130は、図19Bに示すように、高速デコードの実行を指示するモード情報を取得すると、HDの符号化ストリームを上述のように4つの分割ストリームに分割し、4つの分割ストリームのそれぞれを各デコードエンジン120に復号化させる。
 例えば、4つのデコードエンジン120はそれぞれ、HDの画像(1920×1088画素、60i)を2チャンネル分復号可能な処理能力を有するため、画像復号化装置100は、HDの画像を8倍速(4×2)で処理することができる。
 また、画像復号化装置100のストリーム分割部130は、図19Cに示すように、複数チャンネルデコードの実行を指示するモード情報を取得すると、複数のHDの符号化ストリームを分割することなく、その複数の符号化ストリームのそれぞれを各デコードエンジン120に復号化させる。なお、この複数チャンネルデコードの場合、ストリーム分割部130は、SPS、PPSおよびスライスなどの各種NALユニットの複製および挿入を行わず、分割ストリームバッファ152の各領域への符号化ストリーム(チャンネル)の振り分けのみを行う。
 例えば、4つのデコードエンジン120はそれぞれ、HDの画像(1920×1088画素、60i)を2チャンネル分復号可能な処理能力を有するため、画像復号化装置100は、最大8チャンネル、つまり8つのHDの符号化ストリームを同時にデコードすることができる。また、最大チャンネル数以下のチャンネル(符号化ストリーム)を復号化する場合には、デコードエンジン120のクロック周波数を下げて消費電力の低減を図ることができる。例えば、4チャンネルを復号化する場合には、第1デコードエンジン120と第2デコードエンジン120のそれぞれに2チャンネルの復号化を実行させ、残りの第3デコードエンジン120と第4デコードエンジン120を停止させる。または、第1デコードエンジン120~第4デコードエンジン120を使用し、それらのクロック周波数を1/2にする。
 このように、本実施の形態における画像復号化装置100は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。なお、画像復号化装置100における高解像度デコードおよび高速デコードはそれぞれ、符号化ストリームを4つの分割ストリームに分割してそれらを並列に復号化する処理であって、同一の処理である。つまり、高解像度デコードと高速デコードとでは、復号化対象の符号化ストリームの解像度・フレームレート(4k2kまたはHD)が異なるだけである。したがって、画像復号化装置100は、モード情報に応じて、復号化処理を、高解像度デコードまたは高速デコードと、複数チャンネルデコードとに切り替え、さらに符号化ストリームの解像度・フレームレートに応じて、復号化処理を高解像度デコードと高速デコードとに切り替えている。
 (実施の形態2)
 次に、本発明の実施の形態2について、詳細に説明する。
 実施の形態1における画像復号化装置100は、MBスキップラン情報およびQP変化量を修正することにより、分割前の符号化ストリームにおいて連続するMBライン間の依存関係を、各分割ストリームにおけるMBラインの前後関係に応じた依存関係に修正した。
 ここで、符号化ストリームには、QP変化量が含まれていないマクロブロックが含まれる場合がある。QP変化量が含まれていないマクロブロックは、量子化されていないマクロブロックに相当する。具体的には、H.264/AVC規格における、QP変化量が含まれていないマクロブロックは、例えば、(1)スキップマクロブロック、(2)非圧縮のマクロブロック(I_PCM)、または(3)イントラ予測の予測モードが“Intra16×16”ではなく、かつ“coded_block_pattern”が0である(非0係数を1つも含まない)マクロブロックである。
 このようなQP変化量が含まれていないマクロブロックがMBラインの先頭に存在する場合、実施の形態1における画像復号化装置100は、修正対象となるQP変化量が存在しないので、QP変化量を修正することができない。
 そこで、実施の形態2における画像復号化装置200は、QP変化量が含まれていないマクロブロックをMBラインの先頭に含む符号化ストリームから複数の分割ストリームを生成する際に、そのマクロブロックを含む分割ストリームにQP変化量を挿入することを1つの特徴とする。これにより、画像復号化装置200は、各分割ストリームにおける新たな前後関係に基づくQP変化量を適切に設定することができる。
 ここで、分割ストリームにQP変化量が挿入された場合には、MBライン間にQP変化量が存在するため、MBラインを跨って連続するスキップマクロブロックの個数を1つのMBスキップラン情報を用いて示すことができない。そこで、実施の形態2における画像復号化装置200は、MBスキップラン情報の再結合処理を行わないことをもう1つの特徴とする。
 以下、図面を用いて、本実施の形態における画像復号化装置200について説明する。
 図20は、本発明の実施の形態2における画像復号化装置の構成を示すブロック図である。なお、図20において、図1と同様の構成要素については、同一の符号を付し、説明を省略する。
 図20に示すように、画像復号化装置200は、デコーダ210とメモリ150とを備えている。
 デコーダ210は、デコーダ110と同様に、メモリ150のストリームバッファ151に格納されている符号化ストリームを読み出して復号化することによって復号画像データを生成し、その復号画像データをメモリ150のフレームメモリ153に格納する。また、このデコーダ210は、ストリーム分割部230と、N個のデコードエンジン(第1デコードエンジン~第Nデコードエンジン)220とを備えている。
 ストリーム分割部230は、MBスキップラン情報の修正処理およびQP変化量の修正処理を除き、ストリーム分割部130と同等の処理を実行する。ストリーム分割部230の詳細は、図21を用いて後述する。
 N個のデコードエンジン220は、N個の分割ストリームのそれぞれを並列に復号化するN個の復号化部に相当する。N個のデコードエンジン220は、ストリーム分割部230によって分割ストリームに挿入された累積QP変化量を用いてQP値を算出する点を除いて、N個のデコードエンジン120と同等の処理を実行する。
 続いて、ストリーム分割部230の構成および動作について詳細に説明する。
 図21は、ストリーム分割部230の構成を示すブロック図である。
 ストリーム分割部230は、スキップラン修正部137aおよびQPデルタ修正部138a、138bの代わりに、スキップラン修正部237aおよびQPデルタ挿入部238a、238bを備えている点が、図7に示すストリーム分割部130と異なる。
 スキップラン修正部237aは、スキップラン修正部137aと同様に、MBスキップラン情報が、互いに異なる分割ストリームに割り当てられる少なくとも2つのMBラインに跨って連続するマクロブロックの個数を示す場合には、MBラインごとのブロックの個数を示すようにMBスキップラン情報を分割する。
 ただし、スキップラン修正部237aは、スキップラン修正部137aと異なり、各分割ストリームにおいて、複数のMBスキップラン情報を1つのMBスキップラン情報に結合しない。
 QPデルタ挿入部238a、238bは、QPデルタ修正部138a、138bと同様に、QP変化量が、2つのMBラインに跨るマクロブロック間の変化量を示す場合には、各分割ストリームにおけるマクロブロックの新たな前後関係に基づくQP変化量を計算する。
 ただし、QPデルタ挿入部238a、238bは、計算したQP変化量を新たなQP変化量として分割点検出部139に出力する。これにより、各分割ストリームには、新たなQP変化量が挿入(設定)される。つまり、QPデルタ挿入部238a、238bは、各マクロブロックに含まれているQP変化量を修正しない。
 分割点検出部139aは、分割ストリームのそれぞれに、スキップラン修正部237aから取得したMBスキップラン情報と、QPデルタ挿入部238aから取得した累積QP変化量とを含める。
 分割点検出部139bは、分割ストリームのそれぞれに、QPデルタ挿入部238bから取得した累積QP変化量を含める。
 次に、スキップラン修正部237aおよびQPデルタ挿入部238a、238bの動作について、スキップラン修正部137aおよびQPデルタ修正部138a、138bの動作と異なる点を中心に、詳細に説明する。
 なお、以降の説明において、QPデルタ挿入部238a、238bについて共通する機能および処理動作を説明するときには、それらを区別することなくQPデルタ挿入部238と総称する。
 図22は、MBスキップラン情報の修正処理およびQP変化量の挿入処理を説明するための説明図である。
 図22に示されたピクチャには、MBラインL2の末尾に5個、MBラインL3の先頭に3個、MBラインL5の末尾に2個、MBラインL6の先頭に4個の連続するスキップマクロブロックが存在する。
 また前述したように、スキップマクロブロックには、QP変化量が含まれない。したがって、マクロブロックCには、マクロブロックBのQP値とマクロブロックCのQP値との差分値がQP変化量として符号化されている。
 しかし、このようなピクチャがMBラインごとに分割され、それらのMBラインが別々の分割ストリームに割り当てられると、それぞれの分割ストリームで、MBライン境界におけるマクロブロックの前後関係が変化してしまう。
 すなわち、ストリーム分割後には、マクロブロックCが含まれる第2分割ストリームにおいて、マクロブロックCの直前に位置する、QP変化量を含むマクロブロックはマクロブロックAとなる。したがって、そのまま第2分割ストリームをデコードエンジン220が復号した場合、マクロブロックAのQP値に対して、マクロブロックBのQP値とマクロブロックCのQP値との差分値であるQP変化量を反映してしまうことになり、マクロブロックCのQP値を正しく復号化できない。
 そこでQPデルタ挿入部238は、ストリームを分割することにより発生するマクロブロックの前後関係の変化を是正するように、MBラインへ挿入するための新たなQP変化量を分割点検出部139に出力する。つまり、QPデルタ挿入部238は、QP変化量が2つのMBラインを跨ぐブロック間のQP値の差分値を示すことにより、その2つのMBラインが依存関係を有する場合に、その依存関係を断つように、MBラインの先頭に挿入するための新たなQP変化量を分割点検出部139に出力する。
 なお、本実施の形態では、MBラインの先頭にQP変化量が挿入されているが、必ずしもMBラインの先頭にQP変化量が挿入される必要はない。例えば、MBラインの先頭のマクロブロック内など他の場所にQP変化量が挿入されてもよい。
 MBラインの先頭に挿入するためのQP変化量の計算方法としては、実施の形態1と同様に、全てのマクロブロックについてQP値を復元することによりQP変化量を計算する方法と、対象分割ストリームに割り当てられなかったマクロブロックのQP変化量を累積することによりQP変化量を計算する方法とが考えられる。本実施の形態では、後者の計算方法について説明する。
 QPデルタ挿入部238は、MBラインL3~L5に含まれる、QP変化量を含む全てのマクロブロックのQP変化量を累積した累積QP変化量を計算する。そして、QPデルタ挿入部238は、計算した累積QP変化量を再び符号化し、符号化された累積QP変化量を新たなQP変化量として分割点検出部139に出力する。その結果、図22に示すように、累積QP変化量は、MBラインL6の先頭に挿入される。つまり、第2分割ストリームには、累積QP変化量と、もともとマクロブロックCに含まれていたQP変化量とが設定される。なお、累積QP変化量の詳細な計算方法は、実施の形態1と同様であるので説明を省略する。
 なお、ここではMBラインL6に着目して説明したが、QPデルタ挿入部238は、他のMBラインについても、累積QP変化量をMBラインの先頭に挿入するために、符号化された累積QP変化量を分割点検出部139に出力する。例えば、QPデルタ挿入部238は、MBラインL7の先頭に挿入するための累積QP変化量として、MBラインL4~L6に含まれる、QP変化量を含む全てのマクロブロックのQP変化量を累積した累積QP変化量を計算する。そして、QPデルタ挿入部238は、計算した累積QP変化量を符号化し、符号化された累積QP変化量を分割点検出部139に出力する。これらの処理は、分割ストリーム毎に独立して行われる。
 このように、本実施の形態では、累積QP変化量がMBラインの先頭に挿入されるので、MBラインを跨いでスキップマクロブロックは連続しない。つまり、スキップラン修正部237aは、実施の形態1におけるスキップラン修正部137aと異なり、MBスキップラン情報の結合処理を行わない。
 例えば、図22に示されたピクチャの場合、スキップラン修正部237aは、スキップラン修正部137aと同様に、MBラインL2~L3に跨って存在する8個のスキップマクロブロックに対応するMBスキップラン情報を、MBラインL2に含まれる5個のスキップマクロブロックに対応するMBスキップラン情報と、MBラインL3に含まれる3個のスキップマクロブロックに対応するMBスキップラン情報とに分割する。同様に、スキップラン修正部237aは、MBラインL5~L6に跨って存在する6個のスキップマクロブロックに対応するMBスキップラン情報を、MBラインL5に含まれる2個のスキップマクロブロックに対応するMBスキップラン情報と、MBラインL6に含まれる4個のスキップマクロブロックに対応するMBスキップラン情報とに分割する。
 ここで、MBラインL2に含まれる5個の連続するスキップマクロブロックと、MBラインL6に含まれる4個の連続するスキップマクロブロックとの間には、上述したように累積QP変化量が新たなQP変化量として挿入される。そこで、スキップラン修正部237aは、MBラインL2に含まれる5個の連続するスキップマクロブロックに対応するMBスキップラン情報と、MBラインL6に含まれる4個の連続するスキップマクロブロックに対応するMBスキップラン情報とを再結合しない。
 なお、スキップラン修正部237aは、スキップラン修正部137aと同様に、このようにして得られたMBスキップラン情報を再び符号化し、符号化されたMBスキップラン情報を出力する。
 図23は、スキップラン修正部237aの構成を示すブロック図である。なお、図23において、図14と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
 スキップラン修正部237aは、スキップラン抽出部160、スキップラン分割部161、およびスキップラン符号化部164を備えている。つまり、スキップラン修正部237aは、実施の形態1におけるスキップラン修正部137aからスキップラン累積・保持部162と加算部163とを除いた構成と同様である。なお、スキップラン分割部161は、分割したMBスキップラン情報をスキップラン符号化部164に出力する。
 図24は、スキップラン修正部237aによるMBスキップラン情報の修正動作を示すフローチャートである。なお、図24において、図15と同様の処理を行うステップについては、同一の符号を付し、説明を省略する。
 まずスキップラン修正部237aは、MBスキップラン情報“mb_skip_run”を取得したかどうかを調べる(ステップS202)。すなわち、スキップラン修正部237aは、処理しているストリームがスライス終端に到達しているかどうかを判別しない。これは、後述するように、スキップラン修正部237aは、先行MBスキップラン情報を内部に保持しないため、スライス終端に到達したときの先行MBスキップラン情報の出力処理が不要だからである。
 ここで、まだMBスキップラン情報を取得していない場合(ステップS202のNo)、スキップラン修正部237aは、処理の最初に戻りストリームを再度読み進める。
 一方、MBスキップラン情報を取得している場合(ステップS202のYes)、スキップラン修正部237aは、実施の形態1と同様に、該当のMBスキップラン情報が含まれるマクロブロックのアドレス情報から、ピクチャ内におけるマクロブロックの位置を算出する(ステップS204)。
 続いて、スキップラン修正部237aは、実施の形態1と同様に、取得したMBスキップラン情報を分割する必要があるかどうかを判定する(ステップS206)。
 ここで、連続するスキップマクロブロックがMBライン境界に到達すると判定された場合(ステップS206のYes)、スキップラン修正部237aは、MBスキップラン情報を分割するためステップS216に進む。詳細は後述する。
 一方、連続するスキップマクロブロックがMBライン境界に到達しないと判定された場合(ステップS206のNo)、スキップラン修正部237aは、MBスキップラン情報の再符号化処理を行う(ステップS212)。ここで、図15に示すステップS208およびステップS210の処理が実行されないのは、本実施の形態におけるスキップラン修正部237aは、MBスキップラン情報を再結合しないからである。
 その後、スキップラン修正部237aは、再符号化されたMBスキップラン情報を分割点検出部139aに出力して処理を終了する(ステップS214)。
 また、ステップS206で連続するスキップマクロブロックがMBライン境界に到達すると判定された場合(ステップS206のYes)、スキップラン修正部237aは、実施の形態1と同様に、MBライン境界を分割点として、該当のMBスキップラン情報を前半部と後半部とに分割する(ステップS216)。
 さらにスキップラン修正部237aは、分割したMBスキップラン情報のうち、前半部をMBスキップラン情報として再符号化する(ステップS250)。その後スキップラン修正部237aは、再符号化されたMBスキップラン情報を分割点検出部139aに出力する(ステップS252)。つまり、本実施の形態では、MBスキップラン情報を再結合する必要がないので、実施の形態1のように先行MBスキップラン情報を内部に保持しない。
 次にスキップラン修正部237aは、実施の形態1と同様に、分割したMBスキップラン情報のうち、後半部を新たなMBスキップラン情報として設定した後(ステップS220)、その長さが0であるかどうかを判定する(ステップS222)。
 ステップS222で新たなMBスキップラン情報の長さが0であると判定された場合(ステップS222のYes)、スキップラン修正部237aは、それ以上処理すべきMBスキップラン情報がないものとして、処理を終了する。
 ステップS222で新たなMBスキップラン情報の長さが0でないと判定された場合(ステップS222のYes)、スキップラン修正部137aは、まだ処理すべきMBスキップラン情報が存在するものとしてステップS204に戻り、再度MBスキップラン情報の分割および出力処理を行う。
 以上説明した処理が、スキップラン修正部237aではストリームの終了まで繰り返し行われる。このように、スキップラン修正部237aでは、MBスキップラン情報の分割が適切に行われる。
 図25は、QPデルタ挿入部238による累積QP変化量の挿入処理を示すフローチャートである。なお、図25において、図18と同様の処理を行うステップについては、同一の符号を付し、詳細な説明を省略する。
 マクロブロックの処理が開始されると、QPデルタ挿入部238は、実施の形態1と同様に、ステップS300~ステップS316までの処理を実行する。
 そして、処理対象マクロブロックがMBラインの先頭に位置していると判定された場合(ステップS316のYes)、QPデルタ挿入部238は、処理対象マクロブロックが割り当てられる分割ストリームに対応する累積QP変化量を符号化し、分割点検出部139に出力する(ステップS352)。つまり、QPデルタ挿入部238は、MB情報を出力する前に、累積QP変化量を出力する。
 続いて、QPデルタ挿入部238は、処理対象マクロブロックが含まれる分割ストリームに対応する累積QP変化量を0にリセットする(ステップS354)。そして、QPデルタ挿入部238は、MB情報を分割点検出部139に出力し、処理を終了する(ステップS356)。つまり、QPデルタ挿入部238は、MB情報にQP変化量が含まれている場合には、QP変化量を修正することなくそのまま出力する。
 一方、処理対象マクロブロックがMBラインの先頭に位置していないと判定された場合(ステップS316のNo)、QPデルタ挿入部238は、MB情報を分割点検出部139に出力し、処理を終了する(ステップS350)。つまり、QPデルタ挿入部238は、MB情報にQP変化量が含まれている場合には、そのQP変化量を修正することなく、MB情報を出力する。
 以上のように、QPデルタ挿入部238は、MBラインの先頭に挿入するために累積した新たなQP変化量(累積QP変化量)と、符号化ストリームに含まれていたQP変化量とを分割点検出部139に出力する。
 このように、本実施の形態における画像復号化装置200では、実施の形態1における画像復号化装置100と同様に、N個のデコードエンジン220による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。
 特に、MBラインの先頭に位置するマクロブロックがQP変化量を含まない場合であっても、本実施の形態における画像復号化装置200は、新たなQP変化量をMBラインに挿入することにより、並行して復号化処理が行われるときに正しいQP値を得ることができる。
 また、このような本実施の形態における画像復号化装置200は、実施の形態1における画像復号化装置100と同様に、ストリーム分割部230に入力されるモード情報に応じて、図19A~図19Cに示した高解像度デコード、高速デコード、および複数チャンネルデコードのうちの何れかを実行する。
 これにより、本実施の形態における画像復号化装置200は、モード情報に応じて、復号化処理を高解像度デコードと高速デコードと複数チャンネルデコードとのいずれかに切り替えることができるので、ユーザの使い勝手を向上させることができる。
 次に、上記実施の形態1および2に係る画像復号化装置の適用例について説明する。
 図26は、上記実施の形態1および2に係る画像復号化装置の適用例を示す図である。
 例えば、上記実施の形態1および2に係る画像復号化装置は、図26に示すように、放送波を受信してその放送波に含まれる符号化ストリームを再生する再生装置101に備えられる。再生装置101は、BSデジタル放送の放送波を受信するアンテナ101aと装置本体101bとを備え、装置本体101bは上述の画像復号化装置を備える。
 装置本体101bに備えられた画像復号化装置は、アンテナ101aによって受信された放送波から例えば4k2kの符号化ストリームを抽出する。そして、その画像復号化装置は、上述のように、抽出された符号化ストリームを分割してN個の分割ストリームを生成し、N個の分割ストリームを並列に復号化する。
 以上、本発明に係る画像復号化装置および画像復号化方法について、実施の形態を用いて説明したが、本発明は、これらに限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を上記実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
 例えば、上記実施の形態では、画像復号化装置100、200は分割ストリームバッファ152などを備えていたが、これらを備えていなくてもよい。
 図27は、本発明の実施の形態における画像復号化装置の最小構成を示すブロック図である。
 画像復号化装置10は、本発明を実現するための最小構成を有し、取得部11、ストリーム分割部12、およびN個の復号化部13を備えている。
 取得部11は、ストリームバッファ151、若しくはストリームバッファ151から画像復号化装置10に符号化ストリームを取り込むための取得装置(あるいは単なる取得口)に相当し、画像データが符号化された符号化ストリームを取得する。ストリーム分割部12は、ストリーム分割部130、230に相当する。つまり、ストリーム分割部12は、取得部11で取得された符号化ストリームに含まれる符号化ピクチャごとに、その符号化ピクチャを複数の構成単位に分割し、複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成する。N個の復号化部13は、デコードエンジン120、220に相当し、ストリーム分割部12により生成されたN個の分割ストリームのそれぞれを並列に復号化する。また、ストリーム分割部12は、N個の分割ストリームを生成する際に、符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、分割ストリームごとに、その分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、N個の復号化部13の何れかにスライスとして認識されるように、スライス部分群を新たなスライスとして再構成する。
 これにより、符号化ピクチャは例えば複数のマクロブロックラインなどの構成単位に分割され、複数のマクロブロックラインのそれぞれが分割ストリームの一部としてN個の復号化部に割り当てられて復号化されるため、N個の復号化部による復号化処理の負担を均等にすることができ、復号化の並列処理を適切に実行することができる。例えば、H.264/AVCの符号化ピクチャが1スライスで構成されている場合であっても、その符号化ピクチャは複数のマクロブロックラインに分割されるため、その1スライスの復号化を1つの復号化部で負担することなく、N個の復号化部で均等に負担することができる。
 ここで、符号化ピクチャが複数のマクロブロックラインに分割されると、複数のマクロブロックラインに跨るスライスが複数のスライス部分に分割され、それらのスライス部分が互いに異なる分割ストリームに割り当てられることがある。つまり、1つの分割ストリームには、符号化ピクチャのスライスの全体が含まれることなく、そのスライスの断片であるスライス部分が1つ以上集まって構成されるスライス部分群が含まれることとなる。また、このようなスライス部分群には、その先頭を示すヘッダや、その終端を示す終端情報が含まれていない場合がある。また、複数のスライス部分のうち、符号化ストリームにおいて連続する少なくとも2つのスライス部分が、符号化ストリームに含まれる所定の符号語による依存関係を有する場合がある。
 そこで上記実施の形態では、そのスライス部分群を新たなスライスとして再構成するため、そのスライス部分群を含む分割ストリームを復号化する復号化部13は、そのスライス部分群を認識して適切に復号化するための特別な処理を要することなく、スライス部分群を新たなスライスとして簡単に認識して適切に復号化することができる。つまり、上記実施の形態では、N個の復号化部13のそれぞれに特別な処理を行う機能や構成を設ける必要がないため、分割ストリームを復号化する復号化部に従来方式の復号化回路を流用することができ、画像復号化装置の全体構成を簡単にすることができる。
 したがって、画像復号化装置10は、上記実施の形態における分割ストリームバッファ152などを必要とせず、それらがなくても上述の本発明に特有の作用効果を奏し、上記目的を達成することができる。
 例えば、上記実施の形態では、1MBラインを1つの構成単位として扱い、ピクチャを複数の構成単位に分割したが、その構成単位は1MBラインに限らず、2MBラインや、3MBラインであってもよく、ピクチャの垂直方向に一列に配列される複数のマクロブロックであってもよい。例えば、ピクチャがMBAFFで構成されている場合には、2MBラインを構成単位として扱い、ピクチャがMBAFFで構成されていない場合には、1MBラインを構成単位として扱ってもよい。
 また、上記実施の形態では、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入し、デコードエンジンがその複製スライスヘッダが挿入された分割ストリームを読み出して復号化した。しかし、ストリーム分割部が複製スライスヘッダを分割ストリームに挿入することなく、その複製スライスヘッダをデコードエンジンに直接出力してもよい。例えば、ストリーム分割部は、デコードエンジンに読み込まれる分割ストリーム中のMBラインの直前に複製スライスヘッダが存在すべきか否かを判別し、存在すべきと判別したときには、そのMBラインがデコードエンジンに読み込まれる直前に、その複製スライスヘッダをデコードエンジンに出力する。ここで、ストリーム分割部は複製スライスヘッダ自体をデコードエンジンに出力することなく、複製スライスヘッダに含まれている一部の情報だけをデコードエンジンに出力してもよい。
 また、上記実施の形態では、ストリーム分割部は、QP変化量の修正およびQP変化量の挿入のどちらか一方を実行していたが、両方を実行してもよい。その場合、ストリーム分割部は、例えば、MBラインの先頭のマクロブロックがQP変化量を含んでいるか否かを判定すればよい。ここで、MBラインの先頭のマクロブロックがQP変化量を含んでいる場合、ストリーム分割部は、当該マクロブロックのQP変化量の置き換え等を行えばよい(図18のステップS318~S322)。一方、MBラインの先頭のマクロブロックがQP変化量を含んでいない場合、ストリーム分割部は、累積QP変化量の出力等を行えばよい(図25のステップS352~S356)。
 さらに、ストリーム分割部がQP変化量の修正およびQP変化量の挿入の両方を実行する場合、スキップラン修正部は、例えば、MBスキップラン情報がMBラインの先頭に位置しているときに、そのMBラインの先頭にQP変化量が挿入されるか否かを判定することが好ましい。ここで、MBラインの先頭にQP変化量が挿入されない場合、スキップラン修正部は、MBスキップラン情報に先行MBスキップラン情報を加算すればよい(図15のS210)。一方、MBラインの先頭にQP変化量が挿入される場合、先行MBスキップラン情報とMBスキップラン情報とをそれぞれMBスキップラン情報として出力すればよい。
 また、上記実施の形態では、第1の符号語がMBスキップラン情報である場合について説明したが、必ずしも第1の符号語はMBスキップラン情報である必要はない。例えば、第1の符号語は、スキップマクロブロックとは異なる種類のマクロブロックが連続することを示す符号語であってもよい。
 また、上記実施の形態では、第2の符号語がQP変化量である場合について説明したが、必ずしも第2の符号語はQP変化量である必要はない。例えば、第2の符号語は、QP変化量とは異なる、マクロブロック間における符号化係数の変化量を示す符号語であってもよい。
 なお、ブロック図(図1、図7、図9、図14、図20、図21、および図23など)の各機能ブロックは典型的には集積回路であるLSI(Large Scale Integration)として実現される。これらは個別に1チップ化されても良いし、一部または全てを含むように1チップ化されても良い。例えば、図1のデコーダ110で表される部分(ストリーム分割部130と、第1デコードエンジン~第Nデコードエンジン120とを含んだもの)が1チップに含まれていても良い。
 ここでは、LSIとしたが、集積度の違いにより、IC(Integrated Circuit)、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
 また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
 さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
 本発明の画像復号化装置は、簡単な構成で復号化の並列処理を適切に実行することができるという効果を奏し、例えば、4k2kの符号化ストリームを復号化する再生装置などとして有用である。
 10、100、200  画像復号化装置
 11  取得部
 12、130、230  ストリーム分割部
 13  復号化部
 110、210  デコーダ
 120、220  第1~第Nデコードエンジン(デコードエンジン)
 131  スタートコード検出部
 132a  EPB除去部
 132b  EPB挿入部
 133  スライスヘッダ挿入部
 133a  NALタイプ判定部
 133b  ヘッダ挿入カウンタ
 133c  ヘッダアドレス更新部
 133d  ヘッダバッファ
 134、134a、134b  スライスデータ処理部
 135a、135b  スライスデータ層デコード部
 136a、136b  マクロブロック層デコード部
 137a、237a  スキップラン修正部
 138、138a、138b  QPデルタ修正部
 139、139a、139b  分割点検出部
 150  メモリ
 151  ストリームバッファ
 152  分割ストリームバッファ
 153  フレームメモリ
 160  スキップラン抽出部
 161  スキップラン分割部
 162  スキップラン累積・保持部
 163  加算部
 164  スキップラン符号化部
 238、238a、238b  QPデルタ挿入部

Claims (12)

  1.  画像データが符号化された符号化ストリームを復号化する画像復号化装置であって、
     符号化ストリームを取得する取得部と、
     前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成するストリーム分割部と、
     前記ストリーム分割部により生成されたN個の分割ストリームのそれぞれを並列に復号化するN個の復号化部とを備え、
     前記ストリーム分割部は、
     前記N個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、前記N個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
     前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも1つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     画像復号化装置。
  2.  前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
     前記所定の符号語は、前記符号化ピクチャに含まれるスライス内で連続する特定の種類のブロックの個数を示す第1の符号語であり、
     前記ストリーム分割部は、
     前記符号化ストリームに含まれる第1の符号語が、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分に跨って連続するブロックの個数を示すことにより、前記少なくとも2つのスライス部分が依存関係を有するときには、スライス部分ごとのブロックの個数を示すように修正した前記第1の符号語を、前記少なくとも2つの連続するスライス部分がそれぞれ割り当てられる少なくとも2つの分割ストリームに設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     請求項1に記載の画像復号化装置。
  3.  前記ストリーム分割部は、さらに、
     各分割ストリームにおいて、設定される複数の第1の符号語に対応する複数のブロックが当該分割ストリーム内で連続するときには、前記複数の第1の符号語を、前記複数の第1の符号語のそれぞれが示す個数の総和を示す1つの符号語に変換することにより、前記スライス部分群を新たなスライスとして再構成する、
     請求項2に記載の画像復号化装置。
  4.  前記符号化ピクチャは、所定の画素数のブロックごとに符号化されたピクチャであり、
     前記所定の符号語は、前記符号化ピクチャに含まれるスライス内のブロック間における符号化係数の変化量を示す第2の符号語であり、
     前記ストリーム分割部は、
     前記符号化ストリームに含まれる第2の符号語が、符号化ストリームにおいて連続する2つのスライス部分に跨るブロック間の変化量を示すことにより、前記2つのスライス部分が依存関係を有するときには、前記分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算し、計算した変化量に基づく符号語を、前記2つのスライス部分がそれぞれ割り当てられる2つの分割ストリームの一方に設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     請求項1に記載の画像復号化装置。
  5.  前記ストリーム分割部は、
     計算した変化量に修正した前記第2の符号語を前記分割ストリームに設定する、
     請求項4に記載の画像復号化装置。
  6.  前記ストリーム分割部は、
     計算した変化量を示す新たな符号語と前記第2の符号語とを前記分割ストリームに設定する、
     請求項4に記載の画像復号化装置。
  7.  前記ストリーム分割部は、
     前記符号化ストリームに含まれる第2の符号語を用いてブロックごとの符号化係数を復元し、復元した符号化係数を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
     請求項4に記載の画像復号化装置。
  8.  前記ストリーム分割部は、
     前記分割ストリームごとに、当該分割ストリーム以外の分割ストリームに含まれる第2の符号語が示す変化量を累積し、累積した変化量を用いて、各分割ストリームにおけるブロックの新たな前後関係に基づく符号化係数の変化量を計算する、
     請求項4に記載の画像復号化装置。
  9.  前記ストリーム分割部は、
     第2の符号語が示す変化量を累積する際に、スライス境界において、累積された変化量を0にリセットする、
     請求項8に記載の画像復号化装置。
  10.  画像データが符号化された符号化ストリームを復号化する画像復号化方法であって、
     符号化ストリームを取得し、
     取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成し、
     生成されたN個の分割ストリームのそれぞれを並列に復号化し、
     前記N個の分割ストリームを生成する際に、
     前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、前記N個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
     前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも1つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     画像復号化方法。
  11.  画像データが符号化された符号化ストリームを復号化するためのプログラムであって、
     符号化ストリームを取得し、
     取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成し、
     生成されたN個の分割ストリームのそれぞれを並列に復号化し、
     前記N個の分割ストリームを生成する際に、
     前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、前記N個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
     前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも1つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     ことをコンピュータに実行させるプログラム。
  12.  画像データが符号化された符号化ストリームを復号化する集積回路であって、
     符号化ストリームを取得する取得部と、
     前記取得部により取得された符号化ストリームに含まれる符号化ピクチャごとに、当該符号化ピクチャを複数の構成単位に分割し、前記複数の構成単位のそれぞれを、生成対象であるN個(Nは2以上の整数)の分割ストリームのうちの何れかの一部に割り当てることにより、N個の分割ストリームを生成するストリーム分割部と、
     前記ストリーム分割部により生成されたN個の分割ストリームのそれぞれを並列に復号化するN個の復号化部とを備え、
     前記ストリーム分割部は、
     前記N個の分割ストリームを生成する際に、前記符号化ピクチャに含まれるスライスが複数のスライス部分に分割されて複数の分割ストリームに割り当てられるときには、前記分割ストリームごとに、当該分割ストリームに割り当てられる少なくとも1つのスライス部分からなるスライス部分群が、前記N個の復号化部の何れかにスライスとして認識されるように、前記スライス部分群を新たなスライスとして再構成し、
     前記複数のスライス部分のうち、前記符号化ストリームにおいて連続する少なくとも2つのスライス部分が、前記符号化ストリームに含まれる所定の符号語による依存関係を有するときには、前記依存関係が各分割ストリームにおけるスライス部分の前後関係に応じた新たな依存関係となるように、前記複数の分割ストリームのうちの少なくとも1つの分割ストリームに符号語を設定することにより、前記スライス部分群を新たなスライスとして再構成する、
     集積回路。
PCT/JP2009/005648 2008-12-08 2009-10-27 画像復号化装置および画像復号化方法 WO2010067505A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010541968A JP5341104B2 (ja) 2008-12-08 2009-10-27 画像復号化装置および画像復号化方法
CN200980104202.8A CN101939994B (zh) 2008-12-08 2009-10-27 图像解码装置及图像解码方法
US12/866,430 US20100322317A1 (en) 2008-12-08 2009-10-27 Image decoding apparatus and image decoding method
EP09831614A EP2357825A4 (en) 2008-12-08 2009-10-27 APPARATUS AND METHOD FOR IMAGE DECODING

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008311911 2008-12-08
JP2008-311911 2008-12-08

Publications (1)

Publication Number Publication Date
WO2010067505A1 true WO2010067505A1 (ja) 2010-06-17

Family

ID=42242503

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/005648 WO2010067505A1 (ja) 2008-12-08 2009-10-27 画像復号化装置および画像復号化方法

Country Status (5)

Country Link
US (1) US20100322317A1 (ja)
EP (1) EP2357825A4 (ja)
JP (1) JP5341104B2 (ja)
CN (1) CN101939994B (ja)
WO (1) WO2010067505A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012015902A (ja) * 2010-07-02 2012-01-19 Canon Inc 動画像符号化装置及びその制御方法
WO2012011860A1 (en) * 2010-07-21 2012-01-26 Telefonaktiebolaget L M Ericsson (Publ) Picture coding and decoding
WO2012035730A1 (ja) 2010-09-16 2012-03-22 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
JP2013150215A (ja) * 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
JP2015508620A (ja) * 2012-01-20 2015-03-19 クアルコム,インコーポレイテッド マルチスレッドテクスチャ復号
JP2015508627A (ja) * 2012-01-30 2015-03-19 サムスン エレクトロニクス カンパニー リミテッド 階層的データ単位の量子化パラメータ予測を含む、ビデオ符号化方法及びその装置、ビデオ復号化方法及びその装置
JP2015516747A (ja) * 2012-04-13 2015-06-11 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 低遅延画像符号化
US9307260B2 (en) 2010-07-30 2016-04-05 Panasonic Intellectual Property Management Co., Ltd. Image decoding apparatus, image decoding method, image coding apparatus, and image coding method
JP2016054512A (ja) * 2015-11-09 2016-04-14 富士通株式会社 動画像復号装置、動画像復号方法、動画像復号プログラム
JP2017127034A (ja) * 2017-04-18 2017-07-20 富士通株式会社 動画像処理装置及び動画像処理方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009150808A1 (ja) * 2008-06-10 2009-12-17 パナソニック株式会社 画像復号装置および画像符号化装置
KR101279507B1 (ko) * 2009-12-15 2013-06-28 한국전자통신연구원 병렬 처리 기반 파이프라인 복호화 장치 및 방법
JP5610199B2 (ja) * 2010-06-09 2014-10-22 ソニー株式会社 受信装置、受信方法、及び通信システム
WO2011156458A1 (en) 2010-06-10 2011-12-15 Technicolor Usa, Inc. Methods and apparatus for determining quantization parameter predictors from a plurality of neighboring quantization parameters
US8988531B2 (en) * 2010-07-08 2015-03-24 Texas Instruments Incorporated Method and apparatus for sub-picture based raster scanning coding order
EP2621168A4 (en) * 2010-09-20 2014-07-09 Humax Co Ltd METHOD OF PROCESSING TO BE IMPLEMENTED IN THE PRESENCE OF AN EXPRESSION SWITCH DURING CONTINUOUS HTTP TRANSMISSION
KR20120035096A (ko) * 2010-10-04 2012-04-13 한국전자통신연구원 쿼드 트리 변환 구조에서 부가 정보의 시그널링 방법 및 장치
GB2487200A (en) 2011-01-12 2012-07-18 Canon Kk Video encoding and decoding with improved error resilience
US9819968B2 (en) * 2011-01-12 2017-11-14 Texas Instruments Incorporated Method and apparatus for error detection in CABAC
FR2972588A1 (fr) 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US9325999B2 (en) * 2011-03-10 2016-04-26 Sharp Kabushiki Kaisha Video decoder for slices
WO2012169952A2 (en) * 2011-06-10 2012-12-13 Telefonaktiebolaget L M Ericsson (Publ) Signaling of end of slices
FR2977111A1 (fr) * 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US9510020B2 (en) 2011-10-20 2016-11-29 Qualcomm Incorporated Intra pulse code modulation (IPCM) and lossless coding mode deblocking for video coding
JP6080375B2 (ja) * 2011-11-07 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR20240038130A (ko) * 2012-02-04 2024-03-22 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
CA3095638C (en) 2012-06-29 2023-11-14 Ge Video Compression, Llc Video data stream concept
RU2653236C2 (ru) * 2012-09-26 2018-05-07 Вилос Медиа Интернэшнл Лимитед Способ кодирования изображения, способ декодирования изображения, устройство кодирования изображения, устройство декодирования изображения и устройство кодирования и декодирования изображения
WO2014178587A1 (ko) * 2013-05-01 2014-11-06 엘지전자 주식회사 신호 송수신 장치 및 신호 송수신 방법
GB2524726B (en) * 2014-03-25 2018-05-23 Canon Kk Image data encapsulation with tile support
CN204402320U (zh) * 2014-12-02 2015-06-17 亿丰综合工业股份有限公司 无拉绳窗帘的升降控制结构
US9854261B2 (en) * 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
CN105992000B (zh) * 2015-03-06 2019-03-22 扬智科技股份有限公司 影像流的处理方法及其影像处理装置
US10382793B2 (en) * 2015-06-23 2019-08-13 Integrated Device Technology, Inc. Apparatuses and methods for performing information extraction and insertion on bitstreams
CN107483948A (zh) * 2017-09-18 2017-12-15 郑州云海信息技术有限公司 一种webp压缩处理中像素宏块处理方法
GB2600617B (en) * 2019-07-05 2024-06-12 V Nova Int Ltd Quantization of residuals in video coding

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06225278A (ja) 1992-09-23 1994-08-12 Daewoo Electron Co Ltd 並列構造を有する画像復号装置のための画像データ分割回路
JPH08130745A (ja) 1994-10-28 1996-05-21 Matsushita Electric Ind Co Ltd 復号化システム、復号化装置および復号化回路
JP2006129284A (ja) 2004-10-29 2006-05-18 Sony Corp 符号化及び復号装置並びに符号化及び復号方法
US7305036B2 (en) 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
WO2009119888A1 (en) * 2008-03-28 2009-10-01 Sharp Kabushiki Kaisha Methods, devices and systems for parallel video encoding and decoding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5532744A (en) * 1994-08-22 1996-07-02 Philips Electronics North America Corporation Method and apparatus for decoding digital video using parallel processing
EP0710033A3 (en) * 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
US5920352A (en) * 1994-10-28 1999-07-06 Matsushita Electric Industrial Co., Ltd. Image memory storage system and method for a block oriented image processing system
US6301299B1 (en) * 1994-10-28 2001-10-09 Matsushita Electric Industrial Co., Ltd. Memory controller for an ATSC video decoder
US8401084B2 (en) * 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
JP5042568B2 (ja) * 2006-09-07 2012-10-03 富士通株式会社 Mpegデコーダ及びmpegエンコーダ
JP4793366B2 (ja) * 2006-10-13 2011-10-12 日本ビクター株式会社 多視点画像符号化装置、多視点画像符号化方法、多視点画像符号化プログラム、多視点画像復号装置、多視点画像復号方法、及び多視点画像復号プログラム
US20080170793A1 (en) * 2007-01-12 2008-07-17 Mitsubishi Electric Corporation Image encoding device and image encoding method
US8582656B2 (en) * 2007-04-13 2013-11-12 Apple Inc. Method and system for video encoding and decoding
US8619874B2 (en) * 2007-04-13 2013-12-31 Apple Inc. Method and system for video encoding and decoding
US8254455B2 (en) * 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
EP2346255B1 (en) * 2008-10-10 2015-04-08 Panasonic Corporation Image decoding apparatus and image decoding method
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06225278A (ja) 1992-09-23 1994-08-12 Daewoo Electron Co Ltd 並列構造を有する画像復号装置のための画像データ分割回路
JPH08130745A (ja) 1994-10-28 1996-05-21 Matsushita Electric Ind Co Ltd 復号化システム、復号化装置および復号化回路
US7305036B2 (en) 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
JP2006129284A (ja) 2004-10-29 2006-05-18 Sony Corp 符号化及び復号装置並びに符号化及び復号方法
WO2009119888A1 (en) * 2008-03-28 2009-10-01 Sharp Kabushiki Kaisha Methods, devices and systems for parallel video encoding and decoding

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JUNG, B. ET AL.: "Adaptive slice-level parallelism for H.264/AVC encoding using pre macroblockmode selection", JOURNAL OF VISUAL COMMUNICATION AND IMAGE REPRESENTATION, vol. 19, no. 8, 2 October 2008 (2008-10-02), pages 558 - 572, XP025691590 *
ROITZSCH, M.: "Slice-Balancing H.264 Video Encoding for Improved Scalability of Multicore Decoding", PROC. OF THE 7TH ACM AND IEEE INT. CONF. ON EMBEDDED SOFTWARE, 2007, pages 269 - 278, XP002518730 *
See also references of EP2357825A4
ZHAO, J. ET AL.: "New Results using Entropy Slices for Parallel Decoding", ITU - TELECOMMUNICATIONS STANDARDIZATION SECTORSTUDY GROUP 16 QUESTION 6 VIDEO CODING EXPERTS GROUP VCEG-AI32, 16 July 2008 (2008-07-16), XP030003597 *

Cited By (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012015902A (ja) * 2010-07-02 2012-01-19 Canon Inc 動画像符号化装置及びその制御方法
KR101550112B1 (ko) 2010-07-21 2015-09-11 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽쳐 코딩 및 디코딩
WO2012011860A1 (en) * 2010-07-21 2012-01-26 Telefonaktiebolaget L M Ericsson (Publ) Picture coding and decoding
US11524214B2 (en) 2010-07-21 2022-12-13 Telefonaktiebolaget Lm Ericsson (Publ) Picture coding and decoding
US10974107B2 (en) 2010-07-21 2021-04-13 Velos Media, Llc Picture coding and decoding
CN103119938A (zh) * 2010-07-21 2013-05-22 瑞典爱立信有限公司 画面编码和解码
US10456635B2 (en) 2010-07-21 2019-10-29 Velos Media, Llc Picture coding and decoding
US9937393B2 (en) 2010-07-21 2018-04-10 Telefonaktiebolaget Lm Ericsson (Publ) Picture coding and decoding
KR101690400B1 (ko) 2010-07-21 2016-12-27 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽쳐 코딩 및 디코딩
CN103119938B (zh) * 2010-07-21 2016-09-14 瑞典爱立信有限公司 对画面进行编码的方法和设备、对画面的编码画面表示进行解码的方法和设备、以及媒体终端
US8861587B2 (en) 2010-07-21 2014-10-14 Telefonaktiebolaget L M Ericsson (Publ) Picture coding and decoding
KR20140126416A (ko) * 2010-07-21 2014-10-30 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽쳐 코딩 및 디코딩
US9307260B2 (en) 2010-07-30 2016-04-05 Panasonic Intellectual Property Management Co., Ltd. Image decoding apparatus, image decoding method, image coding apparatus, and image coding method
JPWO2012035730A1 (ja) * 2010-09-16 2014-01-20 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
JPWO2012035728A1 (ja) * 2010-09-16 2014-01-20 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
WO2012035728A1 (ja) 2010-09-16 2012-03-22 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
US9185406B2 (en) 2010-09-16 2015-11-10 Panasonic Intellectual Property Management Co., Ltd. Image decoding device, image coding device, methods thereof, programs thereof, integrated circuits thereof, and transcoding device
WO2012035730A1 (ja) 2010-09-16 2012-03-22 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
US8982964B2 (en) 2010-09-16 2015-03-17 Panasonic Intellectual Property Management Co., Ltd. Image decoding device, image coding device, methods thereof, programs thereof, integrated circuits thereof, and transcoding device
KR101684209B1 (ko) * 2012-01-20 2016-12-07 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
JP2013150215A (ja) * 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US9743088B2 (en) 2012-01-20 2017-08-22 Fujitsu Limited Video encoder and video encoding method
KR20140110958A (ko) * 2012-01-20 2014-09-17 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
KR101684207B1 (ko) * 2012-01-20 2016-12-07 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
KR101684208B1 (ko) * 2012-01-20 2016-12-07 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
KR20150138422A (ko) * 2012-01-20 2015-12-09 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
US9973756B2 (en) 2012-01-20 2018-05-15 Fujitsu Limited Video encoder and video encoding method
KR20150139621A (ko) * 2012-01-20 2015-12-11 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
KR20150138421A (ko) * 2012-01-20 2015-12-09 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
US9628825B2 (en) 2012-01-20 2017-04-18 Fujitsu Limited Video decoder, video encoder, video decoding method, and video encoding method
JP2015508620A (ja) * 2012-01-20 2015-03-19 クアルコム,インコーポレイテッド マルチスレッドテクスチャ復号
KR101684038B1 (ko) * 2012-01-20 2016-12-07 후지쯔 가부시끼가이샤 동화상 복호 장치, 동화상 부호화 장치, 동화상 복호 방법, 및 동화상 부호화 방법
US10051273B2 (en) 2012-01-20 2018-08-14 Fujitsu Limited Video decoder and video decoding method
US10045025B2 (en) 2012-01-30 2018-08-07 Samsung Electronics Co., Ltd. Method and apparatus for hierarchical data unit-based video encoding and decoding comprising quantization parameter prediction
JP2018078587A (ja) * 2012-01-30 2018-05-17 サムスン エレクトロニクス カンパニー リミテッド ビデオ復号化方法及び装置とビデオ符号化方法及び装置
JP2017028731A (ja) * 2012-01-30 2017-02-02 サムスン エレクトロニクス カンパニー リミテッド ビデオ復号化装置
JP2019017086A (ja) * 2012-01-30 2019-01-31 サムスン エレクトロニクス カンパニー リミテッド ビデオ復号化方法及び装置とビデオ符号化方法及び装置
JP2015508627A (ja) * 2012-01-30 2015-03-19 サムスン エレクトロニクス カンパニー リミテッド 階層的データ単位の量子化パラメータ予測を含む、ビデオ符号化方法及びその装置、ビデオ復号化方法及びその装置
JP2015516747A (ja) * 2012-04-13 2015-06-11 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 低遅延画像符号化
JP2016054512A (ja) * 2015-11-09 2016-04-14 富士通株式会社 動画像復号装置、動画像復号方法、動画像復号プログラム
JP2017127034A (ja) * 2017-04-18 2017-07-20 富士通株式会社 動画像処理装置及び動画像処理方法

Also Published As

Publication number Publication date
JPWO2010067505A1 (ja) 2012-05-17
JP5341104B2 (ja) 2013-11-13
EP2357825A1 (en) 2011-08-17
CN101939994B (zh) 2013-07-17
EP2357825A4 (en) 2012-06-20
CN101939994A (zh) 2011-01-05
US20100322317A1 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
WO2010067505A1 (ja) 画像復号化装置および画像復号化方法
JP5656879B2 (ja) 画像復号化装置、画像復号化方法、画像符号化装置および画像符号化方法
WO2010041472A1 (ja) 画像復号化装置および画像復号化方法
CN106454359B (zh) 图像处理设备和图像处理方法
CN106851268B (zh) 一种使用列的图像编码方法和设备、解码方法和设备、以及计算机可读存储介质
JP5400888B2 (ja) 並列処理を用いた復号システムおよび方法
ES2968690T3 (es) Aparato de codificación de imágenes, procedimiento de codificación de imágenes, aparato de descodificación de imágenes, procedimiento de descodificación de imágenes y medio de almacenamiento
US9706230B2 (en) Data encoding and decoding
US20170237995A1 (en) Method of determining binary codewords for transform coefficients
US9270988B2 (en) Method of determining binary codewords for transform coefficients
US20100104015A1 (en) Method and apparatus for transrating compressed digital video
JP6569665B2 (ja) 画像復号装置、画像復号方法、及び集積回路
KR102668064B1 (ko) 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법, 화상 복호 방법, 컴퓨터 프로그램을 저장하기 위한 컴퓨터 판독 가능한 비일시적 저장 매체
JP2024019496A (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法
US9001892B2 (en) Moving image encoder and moving image decoder
KR20090089960A (ko) 초고해상도 영상 인코딩 및 디코딩 방법 및 장치
TW202106030A (zh) 圖像編碼裝置、圖像解碼裝置、圖像編碼方法、圖像解碼方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980104202.8

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09831614

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010541968

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 12866430

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2009831614

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE