/* ------------------------------------------------------------------
 * Copyright (C) 1998-2009 PacketVideo
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 * -------------------------------------------------------------------
 */
#ifndef SDP_MEDIA_PARSER_REGISTRY_POPULATOR
#define SDP_MEDIA_PARSER_REGISTRY_POPULATOR
#include "sdp_mediaparser_registry.h"
class SDPMediaParserRegistryPopulater
{
    public:
        static OSCL_IMPORT_REF SDPMediaParserRegistry* PopulateRegistry();
        static OSCL_IMPORT_REF void CleanupRegistry(SDPMediaParserRegistry*& aMediaParserRegistry);
};
#endif
